C89ありがとうございました&新刊はどこかで再販します
あけましておめでとうございます。C89「オリガミデバイセズ」へお越しくださったみなさま、本当にありがとうございました。
新刊「誰もちゃんと教えてくれなかったUSB充電の歴史」はまさかの完売となりまして、お求めいただいたみなさまに厚く御礼申し上げます。また、数量が足りずお求めいただけなかったみなさま、申し訳ありませんでした。
言い訳をしますとコピー誌とはいえ一応3桁の数を刷って持ってきたので、
#秋の全国同人安全運動 #ザイコパワー #久じいが教えてくれた RT @t_hisaki: 同人ってスゲェ儲かるらしいぜっ!! pic.twitter.com/4ITjfUzd
— 東村@C89th全日現地参戦!!!! (@upfg) 2012, 9月 1
こうなることが前提でした。
ところがこの前提通りにならなかったので、ちょっとこれはなんとかせんといかんだろうと思っております。なので、コミティア115以降(これは自分の名前では申し込んでいないので、コミティア115でもし頒布するならどこかに委託することになるでしょう)などでの追加頒布を行います。書店委託は…どこからも声が掛かってないですし、いまのところは検討外です。
取り急ぎ、以上お知らせいたします。2016年もどうぞよろしくお願いいたします。
C89に申し込みました
C89、「Origami Devices」で申し込みました。申込ジャンルコードは240です。*1
発行予定:
- 「最速充電研究」
USB 充電の歴史と現状をちゃんと調べてちゃんと書く本です。いまの USB 充電は公開規格化されていないものが結構ありますし、以前からおかしな都市伝説やら変なネタを噴く人が少なくありませんでした。USB 充電そのものは Quick Charge 2.0 などに移行しつつありますが、当面はお手軽な 5V パワーソースとして使われ続けると思いますので、このあたりでいっちょまとめておきたいです。
- 「さらばメタルケーブル」
日本国内の加入電話網は、2020年~2025年に「PSTNマイグレーション」が予定されています。
NTT東西、2025年をめどに既存電話網をIP網に移行する展望を公表 -INTERNET Watch
電話網「停止」への道程 - [1]動き始めたNTT、影響範囲は不透明:ITpro
猶予あと10年!ISDN電話網は廃止へ、危機に瀕した企業間の取引システム(EDI) - ZDNet Japan
これに合わせて 2025年までの ISDN 廃止が確定的になるなど、日本の公衆通信網は大きく変わりつつあるのですが、これとは別に、全国津々浦々に張り巡らされた電話線、つまりメタルケーブルの処遇が地味に問題になりつつあります。本書はこの「メタルケーブル」の問題をまとめることを目的としています。
- 「『浦賀船渠ノ航跡 中止問題』取材メモ集(仮題)」 ※頒布検討中
「浦賀船渠ノ航跡」中止問題についての取材メモなどを(公開可能な範囲で)まとめたものを出すことを検討しています。これについては情勢により引っ込めたりなかったことにすることがあります。
*1:配置作業が終わるまで黙ってました。普通に考えれば落ちてると思いますけど。
セットアップした直後の Raspberry Pi の IP アドレスを知りたい
またの名を「LANの中で生きているマシンをお手軽に一発チェックしたい」。
キーボード(とマウス)をつないでセットアップする人はともかく、キーボードとディスプレイの接続なしで Raspberry Pi をセットアップしたい、という方も少なからずいらっしゃると思います。ただ、Raspbian をインストールした直後の Raspberry Pi は、DHCP で IP アドレスを取得するため、Raspberry Pi に割り振られた IP アドレスを探るのが一苦労という方も少なくないように思います。 *1
特に、アドレスを配る DHCP サーバが動いているブロードバンドルーターにリース中の IP アドレスを一覧で表示する機能がない場合はわりとめんどくさいです。いちいち ping コマンドを手動で打って確認、とか正直言ってやってられません。
というわけで、こういうのは自動でやってもらいましょう。
fping
fping というコマンドがあります。CentOS の場合は epel リポジトリにいます。
$ fping -g 8.8.8.0/24 -a 8.8.8.8 is alive
範囲を指定して ping を打ち、その結果を表示してくれます。この fping、Windows にもだいたい同じ機能をもったコマンドとして移植?されています。
Fping for windows: fast ping with great options
オプションの指定方法、特に ping を打つ範囲の指定方法はちょっと異なります。Windows 版 fping だとマスクでの指定は出来ないみたい。*2
C:\fping\fping.exe -p -g 192.168.0.1/192.168.0.10 Fast pinger version 3.00 (c) Wouter Dhondt (http://www.kwakkelflap.com) Pinging multiple hosts with 32 bytes of data every 1000 ms: Reply[2] from 192.168.0.2: bytes=32 time=0.9 ms TTL=64 192.168.0.9: request timed out 192.168.0.1: request timed out 192.168.0.6: request timed out 192.168.0.4: request timed out 192.168.0.8: request timed out 192.168.0.10: request timed out 192.168.0.3: request timed out 192.168.0.5: request timed out 192.168.0.7: request timed out Ping statistics for multiple hosts: Packets: Sent = 10, Received = 1, Lost = 9 (90% loss) Approximate round trip times in milli-seconds: Minimum = 0.9 ms, Maximum = 0.9 ms, Average = 0.9 ms
どうも -t オプションや -w オプションが効いているのかどうかちょっと怪しくて結構時間が掛かりますが、 -p を指定すれば順番ではなくて一斉に実行してくれるため、/24 くらいの範囲を指定しても数秒掛からず完了します。*3 ただ、応答結果が順不同になるのはご愛嬌。*4
あと、 CentOS 向け fping だと、-a オプション(ping応答があったターゲットのみ表示する)があるのですが、これに相当するものが Windows 版にはないようです。なので末尾に request timed out のメッセージがずらりと並んでしまうのですが、これ消す方法ないんですかね…
*1:Raspbian で avahi が最初から起動してればいいんですが、デフォルトでは入っていません
*2:CentOS版だと 192.168.0.1/24 または 192.168.0.1 192.168.0.255 みたいな書き方になる
*3:逆にこの Windows 版 -p に相当する機能が CentOS 向けに見当たらない…これ便利なんだけど。
*4:というより、管理者権限がないユーザが -p 抜きで fping 実行するといちいち "socket() - An attempt was made to access a socket in a way forbidden by its access permissions." と出る上に1秒ずつ順繰りに実行するのでとても使えたもんじゃない
Raspberry Pi と Asterisk + iaxmodem + hylafax と Fusion IP-Phone Smart で作る FAX サーバ(2)
の続きです。
セットアップの確認
前回であらかたのセットアップが終わったので、セットアップが出来ているかをまずは確認しましょう。
まず、 Asterisk のコンソールを起動します。
$ sudo asterisk -vvvr Asterisk 1.8.13.1~dfsg1-3+deb7u3, Copyright (C) 1999 - 2012 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. ========================================================================= == Parsing '/etc/asterisk/asterisk.conf': == Found Running as group 'asterisk' == Parsing '/etc/asterisk/extconfig.conf': == Found Connected to Asterisk 1.8.13.1~dfsg1-3+deb7u3 currently running on rpi120 (pid = 10820) Verbosity is at least 4 rpi120*CLI> sip show peers
まず、sip show peers で SIP の状態を確認します。
rpi120*CLI> sip show peers Name/username Host Dyn Forcerport ACL Port Status fusion-smart/12345678 61.213.230.153 N 5060 OK (11 ms) 1 sip peers [Monitored: 1 online, 0 offline Unmonitored: 0 online, 0 offline]
「Status OK」になっていれば大丈夫です。
次に、iax2 show peers で、 iaxmodem が見えているかを確認します。
rpi120*CLI> iax2 show peers Name/Username Host Mask Port Status iaxmodem/iaxmod 127.0.0.1 (D) 255.255.255.255 4570 Unmonitored 1 iax2 peers [0 online, 0 offline, 1 unmonitored]
iaxmodem のモニタが通りませんが(というよりモニタ機能がない?)、このように登録ができていれば大丈夫です。
あとは、Fusion IP-Phone Smart の 050 番号に FAX を送ってみて、動作を確認してください。
動作確認のポイント
モデムの状態
faxgetty は、/var/log/daemon.log にログを出しています。モデムのログがまずここに出ます。
$ sudo cat /var/log/daemon.log | grep FaxGetty (略) Dec 25 05:28:16 rpi120 FaxGetty[2378]: MODEM set DTR OFF Dec 25 05:28:16 rpi120 FaxGetty[2378]: MODEM set baud rate: 0 baud (flow control unchanged) Dec 25 05:28:16 rpi120 FaxGetty[2378]: DELAY 75 ms Dec 25 05:28:16 rpi120 FaxGetty[2378]: MODEM set DTR ON Dec 25 05:28:16 rpi120 FaxGetty[2378]: DELAY 2600 ms Dec 25 05:28:19 rpi120 FaxGetty[2371]: STATE CHANGE: RUNNING -> LOCKWAIT (timeout 30) Dec 25 05:28:19 rpi120 FaxGetty[2371]: MODEM input buffering enabled Dec 25 05:28:19 rpi120 FaxGetty[2378]: MODEM set baud rate: 19200 baud, input flow XON/XOFF, output flow XON/XOFF Dec 25 05:28:19 rpi120 FaxGetty[2378]: DELAY 10 ms Dec 25 05:28:19 rpi120 FaxGetty[2378]: MODEM flush i/o Dec 25 05:28:19 rpi120 FaxGetty[2378]: <-- [4:ATZ\r] Dec 25 05:28:19 rpi120 FaxGetty[2378]: --> [2:OK] Dec 25 05:28:19 rpi120 FaxGetty[2378]: DELAY 3000 ms Dec 25 05:28:22 rpi120 FaxGetty[2378]: MODEM flush i/o Dec 25 05:28:22 rpi120 FaxGetty[2378]: <-- [10:AT+VCID=1\r] Dec 25 05:28:22 rpi120 FaxGetty[2378]: --> [9:AT+VCID=1] Dec 25 05:28:22 rpi120 FaxGetty[2378]: --> [2:OK]
また、送信・受信時の詳細ログが、キューごとのファイルになって /var/spool/hylafax/log に格納されています。
$ sudo cat c000000186 Dec 26 23:10:39.40: [ 2382]: SESSION BEGIN 000000186 8150XXXXXXXX Dec 26 23:10:39.40: [ 2382]: HylaFAX (tm) Version 6.0.6 Dec 26 23:10:39.40: [ 2382]: CallID: "XXXXXXXXXXX" "XXXXXXXXXX" "<NONE>" "s" Dec 26 23:10:39.40: [ 2382]: MODEM set XON/XOFF/FLUSH: input ignored, output disabled Dec 26 23:10:39.40: [ 2382]: <-- [4:ATA\r] Dec 26 23:10:42.19: [ 2382]: --> [10:NO CARRIER] Dec 26 23:10:42.19: [ 2382]: ANSWER: Ring detected without successful handshake Dec 26 23:10:42.19: [ 2382]: Ring detected without successful handshake Dec 26 23:10:42.19: [ 2382]: SESSION END
このログは、FAX ではない電話からテストコールしたときのものです。
faxstat
faxstat コマンドは、送受信のキューの結果を表示します。 faxstat -d でこれまでに処理したジョブの一覧が出ます。
$ sudo faxstat -d HylaFAX scheduler on rpi120: Running Modem ttyIAX (+81.50.XXXX.XXXX): Running and idle JID S Number Pages Dials Date Time Status 16 F 050XXXXXXXX 0:1 2:2 2014/12/26 16.21.06 No response to PPS repeated 8 D 050XXXXXXXX 1:1 2:2 2014/12/26 11.24.32 15 F 03XXXXXXXX 0:1 2:2 2014/12/26 16.19.48 No carrier detected; too ma 12 D 03XXXXXXXX 1:1 1:2 2014/12/26 12.55.46 20 F 050XXXXXXXX 0:4 2:2 2014/12/26 16.47.17 Failure to train remote mod 10 F 03XXXXXXXX 0:1 2:2 2014/12/26 11.54.15 Failure to receive silence 9 F 03XXXXXXXX 0:1 2:2 2014/12/26 11.24.55 Busy signal detected; too m 14 F 03XXXXXXXX 0:1 2:2 2014/12/26 16.01.47 Failure to train remote mod 18 F 03XXXXXXXX 0:1 2:2 2014/12/26 16.29.45 Failure to train remote mod 13 D 03XXXXXXXX 1:1 2:2 2014/12/26 15.29.03 17 F 03XXXXXXXX 0:1 2:2 2014/12/26 16.25.11 Busy signal detected; too m 11 F 03XXXXXXXX 0:1 2:2 2014/12/26 11.57.10 DIS/DTC received 3 times; D 19 D 050XXXXXXXX 1:1 1:2 2014/12/26 16.37.46 21 F 03XXXXXXXX 0:1 2:2 2014/12/26 16.50.44 Failure to train remote mod
ジョブの番号順には出力されない、というちょっと不思議な仕様がある *1 ため、 faxstat -d | sort -n とかのほうが見やすいかもしれません。
faxstat -s はキューに入ったジョブの一覧が出ます。キューになにもいない場合はモデムの状態だけが出ます。
$ sudo faxstat -s HylaFAX scheduler on rpi120: Running Modem ttyIAX (+81.50.XXXX.XXXX): Running and idle
faxstat は、root 以外で実行すると「Bad (null) user name; your password file entry probably has bogus GECOS field information.」と出ることがありますが、これ無視していいんじゃないかと思います。 /etc/passwd の5番目のフィールド見てるって、そこに何か書いてある人っていまほっとんどおらんのと違うか… *2
FAX 送信
$ /usr/bin/sendfax -n -f USERNAME -d 03XXXXXXXX /path/to/faxsendfile.txt
faxadduser でユーザの登録を…という記事をたまに見かけますが、少なくとも aptitude でインストールする sendfax コマンド*3では -f オプションで自分のユーザー名を書いてしまえば送信出来ちゃいました。あと、 -d で送信先の電話番号をハイフン抜きで記述してください。
/path/to/faxsendfile.txt で送信するファイルを指定しますが、テキストファイル、PDFファイルを指定可能です。
オチ
さて、ここまで書いておいてなんですが、Raspberry Pi に FAX サーバをやらせてみると、実に送受信が安定しないことがあります。安定するときもあるししない時もありました。どうも Fusion IP-Phone Smart の音声品質自体がたまに落ちる *4 のか、それとも Raspberry Pi に何かが起きているのか、相手方 FAX のネゴシエーションが 2400bps でも成立しないことも一度二度ではありませんでした。SIPのコーデックを ulaw から gsm に変えて遅延を減らそうとしたら却ってひどくなった(送受信の9割近くがエラーになる)ので、ちょっと打つ手が見つかりません。
ただ、top をガン見したり sar をガン見する限りでは、 CPU やメモリが足りないという感じもなかったので、この「具合の悪さ」の正体がいまいちまだわかっていません。もうちょっとだけ続くのじゃよ…
*1:http://www.hylafax.org/archive/2005-07/msg00121.php によると、ジョブファイルの名前ではなく、inode でソートするという意味不明な仕様になっているんだそうな。
*2:http://www.hylafax.org/archive/2001-05/msg00353.php 参照
*3:hylafaxをインストールすると一緒に入ります
*4:といっても、普通に通話をする分にはあまり気にならない程度の遅延なのですが
Raspberry Pi と Asterisk + iaxmodem + hylafax と Fusion IP-Phone Smart で作る FAX サーバ(1)
おことわり
本項は適宜修正しております。修正箇所には出来る限り脚注等を入れております。
はじめに
Raspbian(というか Debian)って、 aptitude install asterisk iaxmodem hylafax-server hylafax-client で全部インストールできちゃうんですね。というわけでやってみました。
Fusion IP-Phone Smart (以下 FIPS と略すことがあります) を使うので、維持費は0円、あと受信も0円です。
前提条件
- Fusion IP-Phone Smart の契約をするため、クレジットカードが必要です。ちなみにクレジットカード1枚で1アカウントのようです(追加で500円払って別途手続すれば一応複数持てるらしいが…) あと、契約は事前に済ませておくことをお勧めします。 050電話番号、SIPアカウント、SIPアカウントパスワードが必要です。
- /usr/sbin/sendmail からメールを送信可能にしておいてください。実はここちょっと面倒です。Raspberry Pi が置いてある場所が自宅内の場合、契約しているプロバイダが OP25B を実施していると思われますので、 25/tcp でメールを直接外に送れません。Raspberry Pi で動いている MTA(postfix, exim)が、プロバイダのメールサーバへ relayhost できる状態にしておく必要があります。
- ご自宅のブロードバンドルーターのポートフォワードの設定で、 5060/tcp, 5060/udp, 50600/udp~50900/udp が外から Raspberry Pi に届く状態にしておいてください。でないと着信できません。また、このとき iptables で FIPSの SIP サーバ、61.213.230.153 からのみ接続可能な状態にしておきましょう。(参考: Raspberry Pi と iptables (2) - Raspberry Pi を何年か使い続けるブログ )
どこかの DDNS に登録し(無料のもので構いません)、使用可能な状態にしておいてください。これも着信に必要です。必要ありませんでした。DDNS 等がなくても着信まで可能でした。失礼しました。
インストール
基本的には
# sudo aptitude install asterisk iaxmodem hylafax-server hylafax-client
だけでいいはずです。依存するパッケージもここで入るようです。他の方の記事とかを見る限りではみなさん自分でビルドされている(最新版使いたかったらそうならざるを得ませんね)ようですが、この項はインストールだけは aptitude に依存します。
なお、以後は全て sudo su - root した状態で作業しています。
Asterisk 本体の設定
念のため、編集する設定ファイルは作業前にバックアップをとっておくことをお勧めします。
ここは、 languageprefix, runuser, rungroup のコメントアウトを外すだけです。
# diff asterisk.conf asterisk.conf.original 29c29 < languageprefix = yes ; Use the new sound prefix path syntax. --- > ;languageprefix = yes ; Use the new sound prefix path syntax. 60,61c60,61 < runuser = asterisk ; The user to run as. < rungroup = asterisk ; The group to run as. --- > ;runuser = asterisk ; The user to run as. > ;rungroup = asterisk ; The group to run as.
sip.conf はこれだけ書いておけばいいです。既にあるほうの sip.conf は、書き換える前に cp -p sip.conf sip.conf.original なりしてとっておいてください。
[general] context=default allowoverlap=no udpbindaddr=0.0.0.0 tcpenable=no tcpbindaddr=0.0.0.0 transport=udp srvlookup=yes allowguest=no localnet=192.168.0.XXX/255.255.255.0 register => 12345678:abcdefgh@smart.0038.net qualify=yes [fusion-smart] type=friend username=12345678 fromuser=12345678 secret=abcdefgh host=smart.0038.net fromdomain=smart.0038.net context=default insecure=port,invite canreinvite=no disallow=all allow=ulaw allow=alaw dtmfmode=inband nat=yes faxdetect=yes
- localnet
Raspberry Pi の自分の IP アドレス(LAN内)を書いておいてください。
- register
「12345678」は FIPS の SIPアカウント、「abcdefgh」は SIP アカウントパスワードを記入してください。
- username, fromuser
FIPS の SIP アカウントを記入してください。(register で書いたものと同じ)
- secret
FIPS の SIP アカウントパスワードを記入してください。(register で書いたものと同じ)
- nat
「yes」にしてください。
- faxdetect
「yes」にしてください。
- externhost
不要です。
ここまでやれば、FIPS へのレジストまではうまくいくと思います。 asterisk のコンソールを起動してみましょう。
# asterisk -vvvvr Asterisk 1.8.13.1~dfsg1-3+deb7u3, Copyright (C) 1999 - 2012 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. ========================================================================= == Parsing '/etc/asterisk/asterisk.conf': == Found Running as group 'asterisk' == Parsing '/etc/asterisk/extconfig.conf': == Found Connected to Asterisk 1.8.13.1~dfsg1-3+deb7u3 currently running on rpi120 (pid = 1973) Verbosity is at least 4 rpi120*CLI> sip show peers Name/username Host Dyn Forcerport ACL Port Status fusion-smart/12345678 61.213.230.153 N 5060 OK (6 ms) 1 sip peers [Monitored: 1 online, 0 offline Unmonitored: 0 online, 0 offline]
sip show peers の結果がこんな感じになっていれば、Asterisk が正常に起動しており、なおかつ FIPS への接続も出来ていることになります。ただし、ここまでの設定ではまだ extensions.conf の設定もしていないので、FAX が応答するところまでは行きません。
もしこの状態で FIPS の電話番号に掛けてみたら?
== Using SIP RTP CoS mark 5 [Dec 23 11:37:24] NOTICE[2081]: chan_sip.c:22753 handle_request_invite: Call from '12345678' (61.213.230.153:5060) to extension '12345678' rejected because extension not found in context 'default'.
「ただいま電話に出ることが出来ません」とのアナウンスが流れ、なおかつ Asterisk のコンソールに上記のようなメッセージが出たら、「着信には成功した」ということです。(着信はしたけど extension の設定がなされていないので FAX が起動していないだけ)
extension の設定は、iaxmodem と hylafax 側の設定が終わったらやります。
iaxmodem の設定
地味にめんどくさいです。慎重にやりましょう。
/etc/init.d/iaxmodem
aptitude でインストールする iaxmodem の起動スクリプトは、実はそのままでは動きません。実際に使ってみたところ、「起動は出来るけど停止できない(iaxmodem は自力でPIDファイルを作れないのに、起動スクリプト内に --make-pidfile が指定されてない)」「そもそもモデムデバイス名(ttyIAX)を指定するところがない」とか散々でした。これ使ってる人ほんとにいるの?
というわけで、やっつけで直しました。*1
#! /bin/sh # ### BEGIN INIT INFO # Provides: iaxmodem # Required-Start: $syslog $local_fs $network # Required-Stop: $syslog $local_fs $network # Should-Start: asterisk # Should-Stop: asterisk # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Software modem with IAX2 connectivity # Description: Use this software modem with Asterisk or another # IPBX with IAX2 connectivity to send and receive # faxes over VoIP. ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/bin/iaxmodem DAEMON_OPTS=ttyIAX NAME=iaxmodem DESC=iaxmodem test -x $DAEMON || exit 0 set -e case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; restart) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." sleep 1 echo -n "Starting $DESC: " start-stop-daemon --start --quiet --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; status) if [ -s /var/run/$NAME.pid ]; then RUNNING=$(cat /var/run/$NAME.pid) if [ -d /proc/$RUNNING ]; then if [ $(readlink /proc/$RUNNING/exe) = $DAEMON ]; then echo "$NAME is running." exit 0 fi fi # No such PID, or executables don't match echo "$NAME is not running, but pidfile existed." rm /var/run/$NAME.pid exit 1 else rm -f /var/run/$NAME.pid echo "$NAME not running." exit 1 fi ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|status}" >&2 exit 1 ;; esac exit 0
/etc/asterisk/iax.conf
基本的にはこの通りに書いちゃって大丈夫です。bandwidth, jitterbuffer あたりは、FIPS だといじくってもあんまり変わらない雰囲気でした。disallow/allow は使うコーデックの設定です。FIPS では G.722 も使えるのですが、自分の手許で実際に使ってみたらかえって破滅的に FAX の転送がだめになった(6割近くがエラーになった)ので、ここでは設定していません。
[general] bindport=4569 iaxcompat=yes language=ja bandwidth=medium disallow=all allow=ulaw allow=alaw allow=gsm jitterbuffer=no ;dropcount=2 ;maxjitterbuffer=500 ;maxexcessbuffer=80 ;minexcessbuffer=10 ;jittershrinkrate=1 ;tos=lowdelay ;mailboxdetail=yes [iaxmodem] type=friend username=iaxmodem secret=password host=dynamic disallow=all allow=ulaw allow=alaw allow=gsm requirecalltoken=no context=fax-out
/etc/iaxmodem/ttyIAX
iax.conf の username と secret は、ここの peername と secret と合わせてある必要があります。
device /dev/ttyIAX owner uucp:uucp mode 660 port 4570 refresh 300 server 127.0.0.1 peername iaxmodem secret password cidname John Doe cidnumber 8005551212 codec slinear
ここまで設定したら、 /etc/init.d/iaxmodem restart で、iaxmodem が正常に起動・終了するか試してください。
# /etc/init.d/iaxmodem restart Stopping iaxmodem: iaxmodem. Starting iaxmodem: iaxmodem. # ps -ef | grep iaxmodem uucp 2058 1 0 16:25 ? 00:02:08 /usr/bin/iaxmodem ttyIAX
owner が uucp のプロセスがひとつ、このプロセスイメージ名で起動していればOKです。*2
Hylafax の設定
ここでちょっと注意点。/etc/init.d/hylafax を読む限りでは、 /etc/hylafax 内の設定ファイルは Hylafax の起動時に /var/spool/hylafax/etc にまるごとコピーされます。設定を変更する場合は、 /etc/hylafax 側を編集しましょう。
faxsetup
faxsetup を実行します。faxsetup コマンドは、まず(起動時と同じように) /etc/hylafax の設定ファイルを /var/spool/hylafax/etc にコピーします。
# /usr/sbin/faxsetup
続いて、対話形式で hylafax の設定を行います。既定値と異なる入力をするのは以下の項目です。他は既定値のままでよいです。
No scheduler config file exists, creating one from scratch. Country code [1]? 81 Area code []? 50 Long distance dialing prefix [1]? 0 International dialing prefix [011]? 001 Do you want to run faxaddmodem to configure a modem [yes]? no
/etc/hylafax/config.ttyIAX
/etc/hylafax の中にいない場合は、新規で作成します。
CountryCode: 81 AreaCode: 50 FAXNumber: +81.50.XXXX.XXXX LongDistancePrefix: 0 InternationalPrefix: 001 DialStringRules: etc/dialrules ServerTracing: 0xFFF SessionTracing: 0xFFF RecvFileMode: 0600 LogFileMode: 0600 DeviceMode: 0600 RingsBeforeAnswer: 1 SpeakerVolume: off GettyArgs: "-h %l dx_%s" LocalIdentifier: "050.XXXX.XXXX" TagLineFont: etc/lutRS18.pcf TagLineFormat: "From %%l|%c|Page %%P of %%T" MaxRecvPages: 200 # # # # # Modem-related stuff: should reflect modem command interface # and hardware connection/cabling (e.g. flow control). # ModemType: Class1 # use this to supply a hint # # Enabling this will use the hfaxd-protocol to set Caller*ID # #ModemSetOriginCmd: AT+VSID="%s","%d" # # If "glare" during initialization becomes a problem then take # the modem off-hook during initialization, and then place it # back on-hook when done. # #ModemResetCmds: "ATH1\nAT+VCID=1" # enables CallID display #ModemReadyCmds: ATH0 Class1AdaptRecvCmd: AT+FAR=1 Class1TMConnectDelay: 400 # counteract quick CONNECT response # # If you have trouble with V.17 receiving or sending, # you may want to enable one of these, respectively. # Class1RMQueryCmd: "!24,48,72,96" # enable this to disable V.17 receiving Class1TMQueryCmd: "!24,48,72,96" # enable this to disable V.17 sending # # You'll likely want Caller*ID display (also displays DID) enabled. # ModemResetCmds: AT+VCID=1 # enables CallID display # # The pty does not support changing parity. # PagerTTYParity: none # # If you are "missing" Caller*ID data on some calls (but not all) # and if you do not have adequate glare protection you may want to # not answer based on RINGs, but rather enable the CallIDAnswerLength # for NDID, disable AT+VCID=1 and do this: # #RingsBeforeAnswer: 0 #ModemRingResponse: AT+VRID=1 # Uncomment DATE and TIME if you really want them, but you probably don't. #CallIDPattern: "DATE=" #CallIDPattern: "TIME=" CallIDPattern: "NMBR=" CallIDPattern: "NAME=" CallIDPattern: "ANID=" #CallIDPattern: "USER=" # username provided by call #CallIDPattern: "PASS=" # password provided by call #CallIDPattern: "CDID=" # DID context in call CallIDPattern: "NDID=" #CallIDAnswerLength: 4
変更の必要があるのは、CountryCode、AreaCode、FAXNumber、LocalIdentifier、TagLineFormat です。LongDistancePrefix と InternationalPrefix は…これは変えても変えなくてもいいかもしれないです。
CountryCode は 81 固定です。 AreaCode は FIPS なら 50 です。(市外局番の先頭1文字をとったものが入ります)
FAXNumber はこのフォーマットで自分の FIPS の番号を書いてください。LocalIdentifier に書いたものは、送信する FAX のヘッダに書かれます。送信を意識する場合はここを変えておいてください。TagLineFormat はその送信ヘッダのフォーマットです。
( /etc/hylafax/config の内容で上記とかぶる箇所があったら、同じように編集しておいてください)
/etc/hylafax/sendfax.conf
送信時のリトライ回数を定めます。
MaxTries: 2 MaxDials: 2
基本的には 2 か 3 でいいです。MaxTries と MaxDials は同じ数字にしておいたほうがいいかもしれません。 以下は hylafax の中の人のコメント。
Both MaxTries and MaxDials can be set in your faxq config file (/var/spool/hylafax/etc/config). Note, however, that these settings are only used in cases where the client did not set them. So if you have MaxTries: 3 in your config file but the client uses MaxTries: 12, then the latter takes precedence. Lee.
Server-wide MaxTries / MaxDials configuration
ここまで来たら、一度 hylafax の再起動をします。
# /etc/init.d/hylafax restart
正常に再起動したら、次へ進みます。
/etc/hylafax/hfaxd.conf
2か所編集します。まず JobFmt。faxstat コマンド実行時の出力フォーマットをここで決めます。(これの変更は、 hylafax を再起動しなくても faxstat の出力に反映されます)
#JobFmt: "%-3j %3i %1a %6.6o %-12.12e %5P %5D %7z %.25s" JobFmt: "%-5j %1a %-12.12e %5P %5D %Y %.27s"
JobFmt を "%-5j %1a %-27.27e %5P %5D %10Z %.25s" とする人がどうにも多いのですが、 %Z って UNIXTIME なので読みづらくてしょうがないので、 %Y にします。あと、%e は相手の CallID(電話番号)ですが、27桁もいらないので %-12.12e にしました。ちなみに、JobFmt をどのように設定しようと faxstat コマンドの出力はジョブナンバーごとにソートされないらしく、何か手はないかを探したのですが、結局のところ faxstat -d | sort -n でやったほうが早いみたいです。 *3
次に TimeZone。これは一行追加してください。同じく faxstat コマンド出力時のタイムゾーンを決めます。( GMT か local かの二択っぽいですが…)
TimeZone: local
ほかはいじらなくても動きます。
Asterisk の着信設定(extensions.conf)
/etc/asterisk/extensions.conf
[globals] USEVOICEMAIL=YES SPEAKINGCLOCK=317 ECHOTEST=333 MYNUMBER=05012345678 [default] exten => 12345678,1,Dial(IAX2/iaxmodem) exten => 12345678,n,Hangup
まず、 [globals] セクションの MYNUMBER を自分の FIPS の 050 番号に書き直してください。
次に [default] セクションはこの2行を書きます。(12345678 の部分は、自分の SIP アカウントに書き直してください)
[fax-out] exten => _X.,1,Set(CALLERID(num)=${MYNUMBER}) exten => _X.,n,Set(CALLERID(name)=${MYNUMBER}) exten => _0.,n,Dial(SIP/${EXTEN}@fusion-smart,300,T) exten => _X.,n,Hangup
最後に、この [fax-out] セクションを extensions.conf の末尾に加えてください。
/etc/hylafax/FaxDispatch
受信した FAX をメールで転送する設定です。基本的にはこの3行が書いてあれば事足りると思います。
SENDTO=aaaa@example.co.jp FROMADDR=faxserver@example.co.jp FILETYPE=pdf;
他にも設定可能な項目はあるみたいですが、あんまり使いそうにないですね。(faxrcvd の変数がそのまま使えるみたいです)
http://www.hylafax.org/man/6.0.3/faxrcvd.1m.html
extensions.conf を書き換えたので、ここで /etc/init.d/asterisk reload しておいてください。
ここまでで、あらかたの設定は完了です。次回は受信の動作確認と、必要に応じての送信設定をします。
Raspberry Pi のセットアップ時に準備しておくべきもの(1)
前提
この話の前提にあるのは、基本的に手許にあるのは Windows PC だけで、 Linux が動くマシンをほかに用意しているとかそういうことはない、というところにあります。
セットアップ時に必要になるもの・あると便利なもの
- SSH クライアント
Windows PC の上で動作する SSH クライアントであれば基本的になんでもいいです。
- Raspbian のディスクイメージ
Raspbian のディスクイメージは、ダウンロードにかなり時間がかかります。Raspberry Pi を注文したり買いに行く前にダウンロードしておいたほうがいいです。最低でも 1~2 時間くらいは見ておいたほうがいいでしょう。(イメージファイルは zip で圧縮されていますがそれでも 1GB 弱あります。それで 1Mbps 出るか出ないか程度の速度。)
- SD カードリーダー(または microSD カードリーダー)
PC に内蔵されている場合はそれでいいですが、ない場合は用意しておいてください。
- SD カード フォーマッター
SD/SDHC/SDXC用 SDフォーマッター4.0 - SD Association
なくてもいいですが、場合によっては必要になることがあります。あらかじめダウンロードしておいてください。(これもダウンロードに意外に時間が掛かります。)
特に、一度 Raspberry Pi で使った SD カードを他の用途に用いる際、このフォーマッターで初期化する必要があります。(SD カードに複数のパーティションを切った場合、たとえば Windows は先頭パーティションしか認識できない仕様のため)
- Win32 Disk Imager
Win32 Disk Imager プロジェクト日本語トップページ - SourceForge.JP
Raspbian のイメージファイルを SD カードに書き込む際に使います。ダウンロードしたイメージファイルをそのまま SD カードに書き込んでも、 Raspberry Pi は起動してくれません。Win32 Disk Imager で書き込んでください。
- 電源とケース
Raspberry Pi には電源も電源ケーブルも付属してこないので、自分で用意しましょう。あとケースも特に付属しません。ケース使わず剥き身で使う人もいますが、最低でも足(スペーサー)は付けておいたほうがいいと思います…(Type B と Type B+ で基板形状が全然違うので、ケースもそれぞれ異なる点に留意してください)
Raspberry Pi は、 MicroUSB 端子から電源を供給します(MicroUSB 端子自体は電源専用)。最低でも 5V/700mA を安定して供給できる必要があります。個人的には 5V/1A 以上を推奨。
一番手っ取り早いのは、近くのドコモショップか au ショップへ行って「共通ACアダプタ04ください」と店頭で頼むことです。基本的に在庫はあるはずですし、1600円くらいで買えます。下手に安物買うより、これ買った方がいいです。ド安定。(共通ACアダプタ05でもいいですが、あえてこれを買うメリットは特にないです)
安物を買うと、特にケーブルが安物の場合 5W 程度で電圧降下を起こして Raspberry Pi が fault することがあるので注意してください。100均の USB ケーブルとかほんとやめたほうがいいです。大丈夫なやつも結構あるんですが、ハズレかどうかは見た目ではわからないものなので…
- Ethernet ケーブル
Category 5 以上のものなら基本的には何でもいいです。
用意しておくものはそれくらいですかね…
お好みで
- 電動ドライバー・ドリル
たとえばこんなやつ。
Amazon.co.jp | BLACK&DECKER 【かわいいカラーとコンパクトなデザイン】ホームドライバー ピンク/ブラック CSD300TP | DIY・工具 通販
ケースを加工する場合にハンドドリル(手回し)だと正直かなりつらいんで、この手の小型の電動ドライバー・電動ドリルがあるとすごく楽です。ピンバイスとヤスリでひたすら穴を開けていくという手もありますし出来ますが、かなり辛いんでお勧めしません…
なんでこんなことを書いているかというと、Raspberry Pi の放熱対策というものを今後考えるためです。CPU も Ethernet/USB コントローラも結構な熱を持つので。