利用者:MR G
俺、ボーナスが入ったらCP-7970G買うんだ。
注目しているURL
Standalone Cisco 7941/7961 without a local PBX
79XX系電話機とAsterisk
ファームウェア
http://www.xs4all.nl/~graver1/cisco/7905/ 7905のファームウェア
ftp://ftp.cisco.com/pub/voice/ip-phone/sip-7960/ 7961のSIPファームウェア
Cisco 7905/7912
chan sccp
Cisco 79XX カスタマイズ
短縮ダイヤル
Configuring Speed Dial
ラインキー用、ディレクトリボタン用(電話機単体用、企業共有用)短縮ダイヤル設定解説書。
SIPファームとSCCPファームで機能が別れている(らしい)
いぢくり中
Cisco IP Phone
CiscoIP Phone7900シリーズ
マルチライン動かないぞガッデム
SIPファームウェア入れたら、壁紙サイズとか日本語表示用ファイルが変わってた。
とか散々な目に遭ってしまった。
着信音ネタ(音源ファイルのつくりかた)
sox使え。とあるけど、windowsで作れるかやってみたいところ。
そもそもsoxって何。
astlinuxでの保留音作成と同じ流れでなら作れるかな?
それにしても上限が2秒というのは厳しいなぁ。以下、着信音の仕様
8000 Hz サンプリングレート 8 bits per sample ulaw compression 240 - 16080 samples long (0.03 秒~2.01 秒)
着信音ネタ(鳴り分け)
Asterisk側で着信音を鳴り分けできるらしい。
Asterisk側にて、ダイヤルする前に"ALERT_INFO"をSIP inviteに引っ付けて電話機に送り込むと、指定した着信音が鳴るらしい
ただし、
Note that this only seems to work for the internal ringtones and not for any custom ringtones.
↑このように内線着信で、なおかつカスタマイズした着信音だと使えない(らしい)
本当に動くんだろうかと。(例によって未検証)
Asterisk version <1 exten => 3010,1,SetVar(__ALERT_INFO=<Bellcore-dr1>) Assterisk 1.0 and 1.2 exten => 3010,1,SetVar(_ALERT_INFO=<Bellcore-dr1>) Asterisk 1.4 exten => 3010,1,SIPAddHeader(Alert-Info: <Bellcore-dr1>)
Cisco 7961G(SIPファームウェア)
ぶち込みかた
- 7960/7940のファームウェア(SIP用)を解凍し、TFTPサーバーに置いておく。
- (DHCP Optionが指定可能な)DHCPサーバーを立てておく。
- DHCPサーバーの設定で、TFTPサーバーのIPを指定しておく。
- #キーを押しながら電源(PoEならUTPケーブル)を挿す。(着信ランプが点滅するまで#を押し続けること)
- 1着信ランプが点滅しはじめたら、23456789*0#の順に押す。(取り消しは、他のキー二度押し)
- ファームウェアが真っ白になり、電話機再起動
- 電話機再起動後、ファームウェアをTFTPサーバーから引っ張ってくる。
設定ファイル(SIP用)
Asterisk phone cisco 79x1 xml configuration files for SIP
SIP用cnfファイルジェネレーター
←動作未検証
ソフトキー設定
SEP<MAC Address>.cnf.xml中の
<softKeyFile>SK50719900-3bee-4594-bc3f-6400e1a33bf0.xml</softKeyFile>
という箇所が、ソフトキーのテンプレファイル読み込み設定らしい。
[元ネタ]
AutoAnswer
AutoAnswer機能を利用したスクリプト作成中
プログラム力の無さに絶望した。
AstLinux
Microclient JRにAstLinux入れてみた。
NTPサーバー
AstLinuxもNTPサーバーになれるので、設定してみる。
設定変更
NTPサーバーの設定を変更するため、rc.confを変更する。
vi /stat/rc.conf ←標準でインストールした場合 vi /mnt/kd/etc/rc.conf ←/mnt/kd/以下にファイルを置いている場合
/etc/ntp.confを変更しても、再起動したら中身が消えてしまうので注意。
下記のように設定を変更する。(before)
##Master NTP server. This is the NTP server that AstLinux will sync against ##upon bootup. It is also the server that the running ntpd process will use ##to maintain that time sync. NTPSERV="us.pool.ntp.org" #NTPSERV="europe.pool.ntp.org" #NTPSERV="north-america.pool.ntp.org" #NTPSERV="south-america.pool.ntp.org" #NTPSERV="asia.pool.ntp.org" #NTPSERV="oceania.pool.ntp.org" #NTPSERV="africa.pool.ntp.org" ##If you would like to specify several servers to be used at the same time, ##you can specify them in NTPSERVS seperated by spaces. #NTPSERVS="ntp1.cs.wisc.edu us.pool.ntp.org"
NTPサーバーのIPアドレスを追加する。(After)
(ちゃんと調べてないだけではあるけども)DNSが引けてない事があったので、
NTPサーバーのIPを入力してみた。
##Master NTP server. This is the NTP server that AstLinux will sync against ##upon bootup. It is also the server that the running ntpd process will use ##to maintain that time sync. #NTPSERV="us.pool.ntp.org" ←NTPSERV=の箇所は全部コメント扱いにする #NTPSERV="europe.pool.ntp.org" #NTPSERV="north-america.pool.ntp.org" #NTPSERV="south-america.pool.ntp.org" #NTPSERV="asia.pool.ntp.org" #NTPSERV="oceania.pool.ntp.org" #NTPSERV="africa.pool.ntp.org" ##If you would like to specify several servers to be used at the same time, ##you can specify them in NTPSERVS seperated by spaces. #NTPSERVS="ntp1.cs.wisc.edu us.pool.ntp.org" NTPSERVS="133.243.238.243 133.243.238.244" ←ここの行を追加
NICTが提供しているNTPサーバーのIPを入力したが、自宅内に既存NTPサーバーがあれば、そこを指定したほうがよろしい。
設定したら、再起動。
動作確認
再起動後、さきほど変更したrc.confの中身が、
/etc/ntp.confに反映されている事を確認する。
pbx ~ # cat /etc/ntpd.conf listen on 0.0.0.0 server 133.243.238.243 server 133.243.238.244
ntpdが動いていたら、止めてしまう(動作確認のため)
pbx ~ # ps ax |grep ntp 1135 ? S 0:00 /usr/sbin/mDNSProxyResponderPosix 192.168.0.6 pbx AstLinux PBX _ntp._udp 123 1167 ? S 0:00 ntpd 1168 ? S 0:00 ntpd 1170 pts/0 S+ 0:00 grep ntp pbx ~ # kill 1167
ntpdをデバッグモードで動かしてみる。
pbx ~ # ntpd -d listening on 0.0.0.0 ntp engine ready reply from 133.243.238.244: offset 15.018296 delay 1.014712, next query 5s reply from 133.243.238.243: offset 15.009712 delay 1.038980, next query 8s reply from 133.243.238.244: offset 15.018296 delay 1.014712, next query 5s reply from 133.243.238.243: offset 15.009712 delay 1.038980, next query 8s reply from 133.243.238.244: offset 15.018296 delay 1.014712, next query 5s reply from 133.243.238.243: offset 15.008712 delay 1.038980, next query 8s (略) peer 133.243.238.244 now valid peer 133.243.238.244 now valid (略) adjusting local clock by 14.498614s
動いているっぽい動作していたら、OK牧場。
ちなみにntpdを止め忘れていると、文句言われるので注意。
pbx ~ # ntpd -d listening on 0.0.0.0 fatal: bind: Address already in use dispatch_imsg in main: pipe closed Terminating pbx ~ # ps ax
時間のずれが大きすぎると修正できないので、予めPCの時間を合わせておいた良いだろう。
AstLinuxとchan_sccp
AstLinuxには、あらかじめchan_sccpが入っているので、ファイルを追加する必要がない。
Forneus ~ # mount -o rw,remount / Forneus ~ # vi /stat/etc/asterisk/sccp.conf
という具合に/stat/etc/asterisk/以下にsccp.confを新規作成。
sccp.confを作成したら、再起動かけるか、
下記の手順でファイルを読みこむようにする。
Forneus # cp /stat/etc/asterisk/sccp.conf /etc/asterisk/sccp.conf Forneus # asterisk -vvvvvvvvvvvvvvvvvvvvr (vを16連打) Forneus*CLI> unload chan_sccp.so Forneus*CLI> load chan_sccp.so
SEP<MACアドレス>.cnf.xmlの編集も忘れてはいけない
設定が正しければ、Cisco電話機がRegistする。
EXTIF
#EXTIF=eth0
/stat/etc/rc.conf内の、EXTIFをコメントアウト解除すると、PBXオンリーモードになり、
HTTPの設定とかTFTPサーバーの設定が効かなくなる。
INTIF
#INTIF=eth0
/stat/etc/rc.conf内の、INTIFをコメントアウト解除すると、ゲートウェイとして使えるモードになるが、
EXTGW="10.0.0.1" DNS="192.168.0.1"
デフォルトゲートウェイやDNSの設定が効かなくなる。(rc.confの設定が無視される)
rc.confの設定を見直すのが正攻法ではあるものの、小細工も結構効いたりする。
DNS
INTIF=eth0を有効にしていると、/etc/resolv.conf
Forneus init.d # cat /etc/resolv.conf search hoge. nameserver 127.0.0.1
という具合に、外部DNSを参照してくれない。
rc.conf内のDNSの項目が無視される。
/etc/init.d/dnsmasqを開くと
if [ "$LOCALDNS" ] then RCONF="/tmp/etc/resolv-up.conf" echo "search $DOMAIN nameserver 127.0.0.1" > /tmp/etc/resolv.conf else RCONF="/tmp/etc/resolv.conf" fi
とあるので、
nameserver 192.168.0.1" > /tmp/etc/resolv.conf
と小細工することで任意のDNSサーバーを参照することが出来る。
デフォルトゲートウェイ
vi /etc/init.d/network
とやると、/stat/etc/rc.conf内のネットワークの挙動が(ちょっと)わかる
デフォルトルートは
route add -net default gw "$EXTGW" dev "$EXTIF"
と設定されているようだ。
余りスペースを活用する
英語版astlinuxが使用する(CFカードの)ディスクスペースは64MB。
1GBのカード使ったとしたら残り900MBは無駄。こいつはMOTTAINAI
TFTPサーバーとして使うため、ディスクスペースを有効活用する事にした。
とりあえずメモ
スライス
fdisk /dev/hda と入力。
fdisk /dev/hda The number of cylinders for this disk is set to 3957. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)
コマンド?と聞かれたら"n"(Newの略らしい)を押す。
command actionと聞かれたらpを押す。
Command (m for help): n command action e extended p primary partition(1-4)
次に2を押す。パーティション番号らしい
Partition number (1-4):
次はそのままデフォルト値でいいかな。そのままエンターキー
First cylinder (521-3957, default 521):
次はサイズを聞かれる。デフォルト値(全部使う)でいいかな。そのままエンターキー
Last cylinder or +size or +sizeM or +sizeK (521-3957, default 3957):
何も無かったように、最初に戻った。
Using default value 3957 Command (m for help):
pを押したら、スライス切れた気がする。
Command (m for help): p Disk /dev/hda: 2042 MB, 2042191872 bytes 16 heads, 63 sectors/track, 3957 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/hda1 1 520 262048+ 83 Linux /dev/hda2 521 3957 1732248 83 Linux
wを押すと、実際に書き込む。 そして再起動だ。
文句言われることもある。
使用中ですかそうですか。
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table fdisk: WARNING: rereading partition table failed, kernel still uses old table: Device or resource busy
何か忘れてると思ったら初期化を忘れていた。(だから文句言われる)
この前はどうやって使えてたんだろうか(記憶にございません)
mke2fs -c /dev/hda2 と入力してみる。
# mke2fs -c /dev/hda2 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 216832 inodes, 433062 blocks 21653 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=444596224 14 block groups 32768 blocks per group, 32768 fragments per group 15488 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Checking for bad blocks (read-only test): done Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 20 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
テストとして、/mnt/kbあたりにマウントさせてみた。
# mount /dev/hda2 /mnt/kd # mount rootfs on / type rootfs (rw) /dev/root on / type ext2 (ro) none on /proc type proc (rw) none on /dev type tmpfs (rw) none on /var type tmpfs (rw) none on /tmp type tmpfs (rw) none on /dev/pts type devpts (rw) none on /sys type sysfs (rw) usbfs on /proc/bus/usb type usbfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/hda2 on /mnt/kd type ext2 (rw)
dfでもちゃんと空き表示される。
ちなみに、2GBのフラッシュメモリを使っている。
# df -m Filesystem 1M-blocks Used Available Use% Mounted on rootfs 248 69 179 28% / /dev/root 248 69 179 28% / none 1 0 1 0% /dev none 5 1 5 3% /var none 10 3 8 25% /tmp /dev/hda2 1666 3 1578 1% /mnt/kd
自動でmountさせる
mkdir /mnt/hda2 mount /dev/hda2 /mnt/hda2
とやると、とりあえず/mntにマウントされる。 が、さすがに毎回手動マウントする訳には行かない。
mount -o rw,remount / vi /etc/rc
と入力し、起動スクリプトを直接編集することにした。
ここで注意すべきは"/etc/fstab"を直接編集しても意味が無いということだ。
自動マウントさせたいなら、"/etc/rc"を直接編集すべしである。
mount -t ほげ
という分を探すと111行目あたり(Astlinux日本語版なら121行目あたり)に、それっぽい設定が見つかるので、
mount /stat/dev/hda2 /mnt/hda2
という行をテキトーに追加。上書き保存して再起動
これでAstlinuxが使ってない領域を自由に使えるようになった。
# df -m Filesystem 1M-blocks Used Available Use% Mounted on rootfs 248 69 179 28% / /dev/root 248 69 179 28% / none 1 0 1 0% /dev none 5 1 5 3% /var none 10 3 8 25% /tmp /dev/hda2 1666 3 1578 1% /mnt/hda2
/etc/fstabの中身は、/etc/rcが自動作成した「ただのテキストファイル」なので、
変更しても意味が無いっぽい。(再起動の度に新規作成される)
以上、/etc/rcの一部を引用
echo "$ROOTDEV / ext2 ro 0 0 proc /proc proc defaults 0 0 none /dev tmpfs size=200k 0 0 none /tmp tmpfs size=10000k 0 0 none /var tmpfs size=5000k 0 0 " > /tmp/etc/fstab
資源(あいたスペース)の有効活用
標準の保留音では「Asteriskでござる」と言わんばかりであり、ちょっち個性に欠けるので、
/mnt/hda2/に保留音をぶちこむ。みっくみくにしてやんYO!!
Astlinuxで使える保留音のファイルフォーマットはMP3ではなく、ulawファイルなので注意が必要である。
/var/lib/asterisk/moh/default以下には収まりきれないので、下記の方法で解決する
リンク張る
設定要らずで済ますなら、lnコマンドを使う。ファイルが少ないなら問題ないだろう。
Forneus # ln -s /mnt/hda2/MoH/clouds.ulaw /var/lib/asterisk/moh/default/
設定変更
/stat/etc/asterisk/musiconhold.confを直接編集しても良い。
Forneus asterisk # vi /stat/etc/asterisk/musiconhold.conf [default] mode=files ;directory=/var/lib/asterisk/moh/default directory=/mnt/hda2/MoH random=yes ; Play the files in a random order
tftpd
Cisco電話機を動かす前にtftpサーバーを動かす必要がある。
Cisco電話機は、tftpサーバーから設定ファイル、壁紙、着信音などを引っ張ってくるからである。
Forneus # vi /stat/etc/rc.conf (略) ##Configure TFTPD support ##Works the same as FTPD above. TFTPD=inetd ←コメントはずした ##TFTP Server options (flags to pass to TFTP) ##This only works in standalone TFTP server mode #TFTPDOPTIONS="-l -s /tftpboot" TFTPDOPTIONS="-l -s /mnt/tftp" ←付け足しても無視される模様
TFTPD=inetdにすると、TFTPDOPTIONSが無視されてしまうようだ。
TFTPD=tftpdにすると、tftpd自体が動かない模様。
tftpの設定も小細工が可能である。
/vi/etc/init.d/inet if [ "$TFTPD" -a "$TFTPD" = "inetd" ] then if [ -d /mnt/kd/tftpboot ] then ln -s /mnt/kd/tftpboot /tmp/tftpboot else mkdir /tmp/tftpboot fi echo "tftp dgram udp wait root /usr/sbin/tftpd tftpd -s /tmp/tftpboot" >> /tmp/etc/inetd.conf ←ここの行を小細工(Before) fi }
fi echo "tftp dgram udp wait root /usr/sbin/tftpd tftpd -s /mnt/hda2/tftp/" >> /tmp/etc/inetd.conf ←ここの行を小細工(After) fi }
ファイルを変更したら、再起動をかける。
とりあえず動いたらしい
Forneus log # ps |grep tftp 1226 root 272 S tftpd -s /mnt/hda2/tftp/ 1364 root 296 S