「PDA にインストールした SIP ソフトフォンが通話中にハングアップする」という昨日の不具合の解決を試みる。結果を先に言えばいまだ解決していない。以下は思考と試行の記録メモ。備忘録として。昨日不具合の原因として考えたことは、1) 適切なバージョンの DirectX のインストールが必要なのではないか、2) インストールした SJphone のバージョンが不適切なのではないか、の2点。まず DirectX について調べてみる。
1) DirectX 問題?
Windows Mobile に不慣れなので DirectX のインストールの有無を確かめる方法が分からない。困ったときのネット頼りで検索してみるが手順等を示したページは見つからず。かつ、Windows Mobile 用 DirectX ランタイムを配布しているページも見つからず。いろいろ探しているうちに MSDN 内に以下の記述を見つける。
Windows Mobile DirectX and Direct3D
http://msdn2.microsoft.com/en-us/library/ms172504.aspx
The .NET Compact Framework provides two namespaces for developing managed DirectX and Direct3D applications for devices:
*Microsoft.WindowsMobile.DirectX
*Microsoft.WindowsMobile.DirectX.Direct3D
Both namespaces are in the Microsoft.WindowsMobile.DirectX assembly in Microsoft.WindowsMobile.DirextX.dll.
これを読む限りでは DirectX は .NET Compact Framework に標準で含まれているように思える。もしそうならば、Windows Mobile 用の DirectX のランタイム配布版が見つからないのも納得できる。しかし、SJphone で DirectX が検出されなかったのは納得いかない。単に SJphone の不具合なのか。
上の文章を何度か読み直しているうちに .NET Compact Framework のバージョンに問題は無いか?という疑問が生じる。現時点の安定した Windows CE 用 .NET Framework は .NET Compact Framework 2.0。既に .NET Compact Framework 3.0 も存在するものの実績は少ないだろう。この PDA で稼動している Windows Mobile 5.0 には .NET Compact Framework 2.0 がインストールされているのだろうか。Settings でインストール済みソフトを見てみるが SJphone 以外のソフトはリストされていない。既に OS に含まれているのか、それも調べる術を知らないのは Windows Mobile 初心者の悲しいところ。急がば回れだな。
1. .NET Compact Framework 2.0 再頒布可能パッケージをダウンロード。僕の PDA は英語 Windows なので英語版を選択(日本語 Windows なら日本語版を選択するべきだろう)。
.NET Compact Framework 2.0 Redistributable(英語版)
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=9655156b-356b-4a2c-857c-e62f50ae9a55
2. PDA をクレイドルにアタッチ。
3. ダウンロードした NETCFSetupv2.msi を実行。
以下のメッセージが表示されてインストールが続行できず。既に OS に含まれていたようだ。

4. MSのサイトを見ていたら .NET Compact Framework 2.0 SP2 を見つけたのでダウンロード。
.NET Compact Framework 2.0 Service Pack 2 Redistributable(英語版)
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=aea55f2f-07b5-4a8c-8a44-b4e1b196d5c0
5. インストールを試みると正常にインストールが行われる。

ActiveSync 経由でファイルが転送された後、PDA上で .CAB ファイルのインストールが開始される。インストールが終了すると再起動を促されるので[OK]ボタンをクリックして再起動する。
6. 再起動後に SJphone を起動して Audio Wizard を実行するが、やはり DirectX は検出されず。Asterisk でエコーテストを試みるが通話中にハングアップする現象は変わらない。
2) SJphone のバージョン問題?
SJ Labs の Free Downloads ページを見ていると、Stable(安定)版の SJphone は Pocket PC 2003 及び 2003SE 用しか無いが、Trial softphones (unstable) のページに行ってみると Windows Mobile 5.0 用と思しきアーカイブがダウンロード可能になっている。試していた SJphone のバージョンが誤っていたのかもしれないな。
SJphone-wm5.0-320b.exe
http://www.sjphone.org/preview/SJphone-1.60-WindowsCE(preview)/SJphone-wm5.0-320b.exe
現在インストールされている SJphone for Windows CE (Pocket PC 2003) をアンインストールし、ダウンロードした SJphone for Windows CE (Windows Mobile 5.0) をインストール。インストールされている .NET Compact Framework は 2.0 SP2 である。
1. SJphone を起動するとAudio Wizard が実行される:
DirectX が検出されないのは以前と変わらず。ホントに DirectX がインストールされていないのか確かめる方法がわからない。
2. Audio Wizard の途中で以下のメッセージが表示される。
If your device has a microphone Automatic Gain Control feature, disable it and set the microphone level to 0.5:07. Usually this features is controlled on Settings -> System -> Audio.
インストール後に確認したら既に Disable になっていたので問題なし。
3. 設定を終えると PDA の動作が非常に緩慢になる。バックグラウンドで凄く重い処理が動いているような感じ。しばらく経つと普通の速さになったが、あの遅さはなんだったんだろうか。Asterisk へ 1001(エコーテスト)をダイアルしてみるが、症状は変わらず。アナウンスの途中でハングアップして画面の再描画も止まっている。
とりあえず Windows Mobile 5.0 用の安定版がリリースされるまで保留。