« December 2007 | Main | February 2008 »

2008.01.29

[N810]GPS対応地図ソフトMaemo Mapperに、D-Bus Interface経由で特定の地点を表示させる

NOKIA N810で動くGPS対応地図ソフトMaemo Mapper

マップデータをGoogle MapsやVirtual Earthなどからローカルに一括ダウンロードして使えるという禁断の機能が付いており、GPXフォーマットでTrackやRouteの読み書きができるなど、結構出来がよくてホクホクしています。

GeocodingなどのWebサービスと連携させるとよかろうなと思いますが、Maemo Mapperを外部からコントロールする機能が無いことにはどうにもなりません(※)。

※:どうにもならないことはないですが面倒です。

MaemoにはD-Busというプロセス間通信の機構が搭載されていて、D-Bus Interfaceが実装されているアプリは、外部からコントロールができるようになっています。

Qtopiaにおける、qcopメッセージみたいなものですね。D-Bus系の処理をするコマンドは、「dbus」で始まる名前で存在しており、特定のプロセスに対してメッセージを送る場合は、dbus-sendを使います。

Maemo Mapperにも、数は少ないながらD-Busのメソッドとシグナルが実装されています。詳しい情報は、ソースのdbus-ifc.hにあります。

でもって、以下のようなシェルスクリプトを書いて「map」という名前で保存した後に実行権を付与し、パスの通ったところに置いたならば、

#!/bin/sh

dbus-send \
--session \
--type=method_call \
--print-reply /com/gnuite/maemo_mapper \
--dest=com.gnuite.maemo_mapper \
com.gnuite.maemo_mapper.set_view_center \
double:$1 double:$2 int32:$3 double:$4

以下のようなコマンドで、Maemo Mapperに特定の地点を特定のズームレベルで表示させることができます。

凡例) map [lat] [lon] [zoom level] [rotate angle]

map 100.000 100.000 5 0.0

ただし、rotate angleの指定はどうも効いていないみたいで、変な角度で表示されます。

カーソルキーの上を押すと上に向き直るので、それでしのごうかと思っています。

もし角度を指定できたら教えてください。実際の処理はソースファイルdbus-ifc.cに書いてあります。 読んでもよく分かりませんでした。

osso-browserにD-Bus Interfaceから特定のURLを表示させる

N810標準のブラウザである「browser」またの名を「osso-browser」に、外部から特定のURLを表示する場合は、browser_dbuscmd.shという標準で存在するスクリプトを使います。

browser_dbuscmd.shの中身は以下の通りです。dbus-sendを使ってますね。

#!/bin/sh

dbus-send --system --type=method_call --dest="com.nokia.osso_browser" --print-reply /com/nokia/osso_browser/request com.nokia.osso_browser.$1 string:"$2"

exit 0

browser_dbuscmd.shの使い方は以下の通りです。

新しくウインドウを開いて表示
browser_dbuscmd.sh open_new_window http://www.google.co.jp/

既存のウインドウで表示
browser_dbuscmd.sh load_url http://www.google.co.jp/

一番手前のウインドウを一つ閉じる
browser_dbuscmd.sh close_window

osso-browserを終了させる
browser_dbuscmd.sh exit_browser

これでJavaScriptも実行できます。

既存のウインドウに対して実行

browser_dbuscmd.sh load_url "javascript: alert(document.title);"

RubyからD-Bus

Ruby Maemoにdbusというライブラリが収録されており、これでD-Busをいじることができます。

詳しくはググってください。

require 'dbus'

|

2008.01.28

[N810]強制USB HostモードでNOKIA N810にUSB機器をいろいろ接続

N800からの改良で本体USBポートからUSB機器に対する電源供給ができるようになり、機器がつなぎやすくなったN810ですが、本体側のコネクタにMicro USB (EMU)が採用されたことで、国内ではケーブルの入手が困難です。

特に、USB Hostで動作させるのに必要な、Micro USBのAタイプが付いたタイプは入手困難です。

しかし、付属のUSBケーブル、NOKIA CA-101を使ってUSB機器を使う方法があるので紹介します。

N810でUSB機器を使う上での情報は、 Internet Tablet Talkの、以下のForumに集積されてます。

http://www.internettablettalk.com/forums/showthread.php?t=14092

方法1: ケーブルを加工する

Micro Bのケーブルに、W-ZERO3 [es]のときに流行った、Mini Bを電気的にAタイプ相当にするのと同様の改造を適用する方法があります。

前出のForumに、こんなことが書いてあります。

> ケーブルを剥くと出てくる5本の被服線のうち、通常赤、緑、白、黒がUSB用、
> 茶色がhost/周辺機器判別用だ。
>
> 黒、茶色の線の被服を途中で剥く。
> 燃えてしまわないよう注意しながらライターであぶる。
> こうすると被服が溶けて剥きやすい。
>
> 2本を剥いた部分で短絡させ、半田付けする。
> これでHostモードケーブルの出来上がり。
>
> 野心的なあなたは、2本の線の間にスイッチを設置するといいだろう。
> そのケーブルはどっちの用途にも使えるようになる。

W-ZERO3[es]の時と同じですね。

しかし、この改造をするには、信号線5本全結線されていないといけません。
さもなくば、Micro USB側のコネクタの樹脂を破壊する改造が必要になってきてしまいます。

CA-101が全結線かどうか分かりませんし、替えが無く、通販で入手するしか無いものを改造に供するのは気が引けるので、僕はやりませんでした。

方法2: 強制的にUSB Hostモードへ移行させる

方法1とは別に、ケーブルに手を入れずに、強制的にUSB Hostモードへ移行する方法があります。

それは、以下のようなコマンドを実行するというものです。

N800の時からできたことですが、ケーブルの入手が困難なN810においては、より価値が高まってますね。

USB Hostモードへの強制的な移行

$ sudo gainroot
# echo host >/sys/devices/platform/musb_hdrc/mode
# exit

USB Hostモードから、デフォルトのモード(On-The-Go)への復帰

$ sudo gainroot
# echo otg >/sys/devices/platform/musb_hdrc/mode
# exit

デフォルトでは「sudo gainroot」コマンドは使えません。
flasherでR&Dモードにするか、パッケージ「becomeroot」をインストールして、「sudo gainroot」できるようにする必要があります。

管理者権限の取得については、こちらのエントリを参考にしてください。

[N810]NOKIA N810のキーボードカスタマイズ

USB Hostモードに移行したら、CA-101と、Aメス<>Aメスのジェンダチェンジャを組み合わせてUSB機器を接続できます。

いろいろつないでみた

というわけで、「方法2」で早速いろいろなものをつないでみました。

KINESIS Advantage USB

キーボードとしては結構電気を食う方ですが、使えました。

キーボードに共通した問題として、つなぐとストレージデバイスとして自動マウント処理をしようとし、エラーダイアログが出てしまうというものがあります。動作には問題ありません。

ケーブルが邪魔ですが、本体を真ん中のスペースに置くとちょうどいい。

Happy Hacking Keyboard

むかーし買った3モードのHappy Hacking Keyboardを、USB to PS/2アダプタを介してつないでみました。

問題無し。

Twiddler2

片手キーボードTwiddler2のUSB版をつないでみました。

トラックポイントには反応しませんが、使えます。

GR-DIGITAL

GR-DIGITALをマスストレージモードでつないでみました。

問題無し。

アンマウントは、ステータスバーのUSBアイコンを使って実行します。

メモリカードリーダ

メモリカードリーダをつないでみました。BUFFALOのMCR-C12/U2。特に問題無し。

ファームウェアが古かったので、SD化したMicro SD 2Gが認識しませんでしたが、アップデートしたら認識するようになりました。Micro SD 8GB(SanDisk)は、いかようなアダプタを挟んでも認識しませんでした。

Micro SD 8GBは、付いてきたMicro SD to USBアダプタでも認識しませんでした。

SDHCを認識させる要件は何なのでしょうか。

|

2008.01.27

[Mac OS X]単3電池1本で動くGPSロガー HOLUX m-241をMac OS Xで使う

GPSロガーのHOLUX m-241を購入しました。

i-Blue 747 / i-Blue 757 / Qstarz BT-Q1000 / i.Trek Z1 / Konet BGL-32などと同様、超高感度のMediatekのMTKチップを搭載した機種です。

m-241は、単3電池1本で約14時間駆動するのが特徴。

外見はKodakの35mmフィルムを模していて、ユニークですね。

みなさんの評では、「ちょっと大きい」とのことですが、単3電池で動くというのは、とにかく素晴らしいです。

NOKIA N810とのペアリング

NOKIA N810とのペアリングで困ったのが、マニュアルにpasscode (pairing code)の記載が無いこと。

マニュアルにあるWindows Mobileとのペアリングでは、SPP Slaveを選ぶように指定しているので、記載が回避されています。

しかし、NOKIA N810では、そのような指定ができません。

HOLUXはよくpairing codeに "0000" を使うとの記載を発見したので、それで試したら大丈夫でした。

Mac OS Xでの設定変更/ログの吸い出し:bt747編

Mac OS X Leopardを使っている自分にとっては、ログ取りできるのはいいものの、ログのダウンロードがやっかい。

純正のユーティリティは、Windowsで動くものしか提供されていないのです。

Java製のbt747が使えることが分かりました。

bt747は、ログのダウンロードだけでなく、m-241単体では不可能な、詳細な設定もできる優れものです。

Mac OS Xで動かすには若干の準備が必要です。

具体的な手順は、Levien van Zonさんが立てたスレッド「BT747 on MacOS X」に書いてあります。

むぁっく日記さんのエントリ、「MacOSX版GPSロガー用ソフトウェアの使い方」辺りに日本語の情報があります。

僕の場合、ドライバはこちらの業者が用意しているものを使いました。

http://www.gpsdgps.com/product/pr_holux_m-241.htm

デバイスファイル名が、上記の例とは違って「/dev/tty.SLAB_USBtoUART」となったので、その部分は修正しています。

HOLUX m-241との間で通信をする場合の要諦は、115200bpsでは動かず、38400bpsに設定する必要があるということです。

HOLUX m-241とbt747との接続は、以下の手順を踏む必要がありました。

  • 起動直後の「Con」タブで、ボーレートを「115200」から「38400」に変更
  • 「Connect Port Nbr」ボタンを押す

接続するとすぐ「Log」タブへ移動しますが、「Con」タブに戻って見てみると、接続が成功していれば、以下のような情報が表示されると思います。

そのほか「File」タブの「Output Dir:」には、既存のフォルダを指定する必要があります。デフォルトでは「/BT747」になっていますが、そのようなディレクトリは、作っていない限り無いはずですのでエラーが出ます。既にあるフォルダを指定して、「Apply&Set the above values」ボタンを押し、反映させます。

ログは、「Log」タブで「Get Log」ボタンを押せば取得が始まるはずです。

取得したログは、m-241のメモリイメージをダンプしたもののようで、バイナリです。 そのままでは使えません。

bt747には、このバイナリのログから各種フォーマットに変換する機能が付いています。 ログを取得した後で「Log」タブにある「To CSV」等のボタンを押せば変換が始まります。

(ログ変換がうまくいかないと書いていましたが、ログがうまく取得できていなかったのが原因でした。ログを取り直したら変換もうまくいきました。触った範囲の機能は完動です)

Mac OS Xでの設定変更/ログの吸い出し:MTKBabel編

ほかにソリューションは無いかと探してみると、i-Blue 747をはじめとしたMediatek MTKチップ搭載GPSの操作をする、MTKBabelというPerlスクリプトがあったので試してみました。

http://www.rigacci.org/wiki/doku.php/doc/appunti/hardware/gps_logger_i_blue_747

MTKBabelの実行にはDevice::SerialPortが必要ですので、CPANからインストールします。

$ sudo perl -MCPAN -e shell
cpan> install Device::SerialPort

CPANを実行したことが無ければ、Device::SerialPortのインストールの前にいろいろと聞かれるでしょう。適当にデフォルトで答えておけばOKです。

ダウンロードしてきたmtkbabel-0.5.tar.gz(現時点のバージョン)を解凍すると出てくる「mtkbabel」を編集します。115200bpsでつなごうとするので、m-241ではそのままでは動きません。以下のような行があるので、

$device->baudrate(115200) || die "fail setting parity";

以下のように書き換えます。

$device->baudrate(38400) || die "fail setting parity";

後は、mtkbabelのあるディレクトリで以下のように実行すればログがm-241から吸い出され、バイナリフォーマットと、XMLベースのGPXフォーマット(ってよく知らないんですが)でカレントディレクトリに書き出されます。

chmod +x mtkbabel
./mtkbabel -p /dev/tty.SLAB_USBtoUART  -f data -t -w

デバイスファイル名は、僕の場合です。bt747で推奨されているドライバを入れているなら、「/dev/cu.SLAB_USBtoUART」かもしれません。

その他の情報

mtk-gps-controlというPythonスクリプトがありました。

|

2008.01.24

[N810]NOKIA N810上のEmacsでクリップボードを扱う

NOKIA N810でEmacsを使うようになってまず不便に思うのは、現状のmaemo-cjkを入れた環境ではキーボードのスペシャルキーのロックが利かないこともそうですが、クリップボードとの連携ができないことです。

Linux Zaurusではyaktyさんのqcfと、namさんのqcf-copy / qcf-pasteを使っており、qcfの代わりになるコマンドを探せばよさそうです。

ZaurusではQteのクリップボード(QClipboard)でしたが、N810のOS2008の場合はGTKベースですので、GTKのクリップボードと標準入出力のブリッジを探すことになります。

しかし、これというものを見つけることができなかったので、自分で作ることにします。

Ruby-Maemoを調べた時にRuby/GTK2が含まれているのを知ったので、それでやってみました。

clip.rb

GTKのクリップボードと標準入出力のブリッジの役を果たすRubyスクリプトです。

Thomas Leeさんのブログを参考にコピペしました(それは参考とは言わない)。

#!/usr/bin/env ruby

require 'kconv'
require 'gtk2'
require 'optparse'

def get_clip()
  puts Gtk::Clipboard.get(Gdk::Selection::CLIPBOARD).wait_for_text.toutf8
end

def set_clip()
  buf = ""
  while gets()
    buf += $_
  end
  Gtk.init
  clip = Gtk::Clipboard.get(Gdk::Selection::CLIPBOARD)
  clip.set_text(buf.toutf8)
  clip.store
end

opts = OptionParser.new

opts.on("-g"){
  get_clip()
}

opts.on("-s"){
  set_clip()
}

opts.parse!(ARGV)

クリップボード中のテキストをRubyで処理して書き戻す、などといった使い方もできますね。

clip-copy / clip-paste

Elispの方です。namさんのものを改造しました。

;#####################
;# for clip.rb
;#####################
(global-set-key "\C-cc" 'clip-copy)
(global-set-key "\C-cv" 'clip-paste)

(defun clip-copy ()
  ;; Copy region on current buffer to clipboard on maemo.
  (interactive)
  (let ((coding-system-for-write 'utf-8))
    (message "... copy to clipboard")
    (call-process-region (region-beginning) (region-end) "clip.rb" nil nil nil "-s")
    (message "")))

(defun clip-paste ()
  ;; Paste maemo clipboard to current buffer.
  (interactive)
  (message "... paste from clipboard")
  (let ((s (point))(e))
    (let ((coding-system-for-read 'utf-8))
      (call-process "clip.rb" nil t nil "-g"))
    (setq e (point))
      (if (equal e s)
          (ding)
        )
    (message "")))

インストール

clip.rbを実行権を付けてパスの通った場所にコピーします。 僕は、clip.rbをexec-pathを通した/home/user/binに置いてます。

clip.rbの実行にはRubyとRuby/GTK2が必要ですので、以下からRuby-Maemoをインストールします。

http://maemo.org/downloads/product/OS2007/ruby-maemo/

Ruby/GTK2はRuby-Maemoに含まれています。 Ruby-Maemoとは、そういう実体があるわけでなく、複数のextensionから成る複合パッケージです。

続いて、clip-copy, clip-pasteを.emacs.elなどにコピペ。 eval-bufferするか、Emacsを再起動します。

使い方

Ctl+c cでリージョンをクリップボードに転送

Ctl+c vでカレントポイントにクリップボードからペースト

インプレと展望

Linux ZaurusでできていたことがN810でもできるようになりました。

ただ、clip.rbの実行に当たってRuby/GTK2のロードに時間がかかるので、ちょっと長めに待たされます。

Thomas LeeさんのブログにはC版のソースも載っているので、いずれ作ってみようかと思っていますが、保証の限りではありません。

#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <string.h>

int main (int argc, char **argv) {
    const char *message = "Hello, World";

    /* initialize GTK */
    gtk_init (&argc, &argv);

    /* set the clipboard text */
    gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), message, strlen(message));

    /* store the clipboard text */
    gtk_clipboard_store(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD));

    return 0;
}

browse-urlの設定が残されてますが、コマンドラインからブラウザにURLを表示させる方法が分からない……。

ご存知の方がいらしたら教えてください。

|

2008.01.18

[N810]NOKIA N810のキーボードカスタマイズ

NOKIA N810が届きました(えっ!?)。

やはりキーボードが固いですね。親指の先でなく、親指の腹で押すようにすると少しいいかなという感じがします。

せっかくのキーボードですが、固い上に必要なものがいろいろありません。
Escこそ液晶横のバックボタンで代用できますが、Tab, Esc, "|", "[", "]", "{", "}", "`"などなど。
一般の人はあんまり使わないでしょうが、NOKIA N810を買うようなアレな人は気になるはず。

カスタマイズの方法を探してみると、色男Mike Rowehl氏のブログのエントリ「Adding Pipe and Tab to the N810 Keyboard」にいろいろと書いてありました。
Mike Rowehl氏は「xmodmap」を使う方法を提案していますが、このエントリに寄せられたtajuma氏のコメントにある、以下のファイルを直接編集する"brute force solution"をまねしてみました。

/usr/share/X11/xkb/symbols/nokia_vndr/rx-44

何はともあれosso-xterm

「osso-xterm」をインストールします。
maemoのDownloadページからインストールできたと思います(後で書きます)。
ここで引っかかる人は居ないですよね。

root権限でシェルを実行する準備

「/usr/share/X11/xkb/symbols/nokia_vndr/rx-44」を編集するにはroot権限が必要ですが、標準状態ではroot権限を取得する方法が無いようです。suしようにも以下のようなエラーが出ます。

su: applet requires root privileges!

Linux Zaurusにおけるアイコン長押しに相当する設定方法があるのでしょうか。

sudoするとパスワードを聞かれますが分からず。
検索してもこれというものを見ないので、どうやらrootのパスワードは公開されていないようですね。

正式には「flasher」を使ってR&Dモードにすることによってroot権限を得るそうですが、それには母艦とのUSB接続が必要です。
N810単体でも「becomeroot」というパッケージをインストールすると、root権限のシェルが実行できるようになります。

N810標準のパッケージ管理ツールは「Application manager」ですが、標準状態で登録されている公式のリポジトリだけでは用が足せません。maemoの世界では、野良リポジトリが負う部分が大きいようです。
「becomeroot」を置いているリポジトリをはじめ代表的なリポジトリは、次なる手順で一網打尽的に登録できます。

  • N810のブラウザで「http://gronmayer.com/it」にアクセス
  • ページの一番下までスクロール、「Select All Repositories.」をクリック
  • 「Install Selected」ボタンをクリック
  • リポジトリを一つ追加するごとにダイアログが表示されるので、逐一「OK」をクリック

登録を済ませ、「Application manager」を起動し、「Show installable applications>All」とたどると「becomeroot」が現れるはずです。これをインストールします。
以降、「sudo gainroot」でroot権限のシェルが実行できます。

「easyroot」という同目的に使うと思われるパッケージもありますが、「becomeroot」とは排他利用となります。「easyroot」はまだ使ったことがありません。

「sudo gainroot」なんて気持ち悪いコマンドなど使いたくないので、普通に「su」ないし「sudo」できるようにしたいところです。
このリポジトリ登録方法含め「Hacking the Nokia N810」に全部書いてありますが、passwdでrootのパスワードを変更してもsu/sudoできてません。
とりあえず「sudo gainroot」でroot権限のシェルは実行できるので、この問題は後回しにします。

設定ファイルの編集

ここまで来たら、後は「/usr/share/X11/xkb/symbols/nokia_vndr/rx-44」を編集するだけです。

$ sudo gainroot
# cd /usr/share/X11/xkb/symbols/nokia_vndr
# cp rx-44 rx-44.org
# vi rx-44

編集後のファイルをアップしておきます。
「Version: 1.2007.42-19」のものです。バージョンが違う場合は、そのまま使わない方がいいかと思います。

「rx-44」をダウンロード

オリジナルはこちら。

「rx-44.org」をダウンロード

編集したのは以下の部分です。

key <AB07> { [ m, M, bar, bar ] };
key <AB08> { [ comma, less, bracketleft, braceleft ] };
key <AB09> { [ period, greater, bracketright, braceright ] };
key <BKSP> { [ BackSpace, BackSpace, Escape, BackSpace ] };
key <SPCE> { [ space, space, Tab, space ] };
key <AC10> { [ semicolon, colon, grave, grave ] };
key <COMP> { [ Control_L, Control_L, Control_L, Multi_key ] };
modifier_map Control { Control_L, Control_R };

オリジナルのファイルのバックアップを取っていなかったので、持っている方がいらしたら都合していただけないでしょうか(笑)。534さんありがとうございました。

編集した後に、以下も実行しておきます。
元ブログのコメントに書いてあるのは「-set」となっていてエラーが出るので注意してください。

gconftool-2 --set -t string "/apps/osso/keybindings/global/osso-global-search" ""

この操作で、Ctrl+Eで検索のダイアログが出なくなるようになります。
これをやっておかないと、例えばxtermを使っている際にCtrl+Eで行末に飛ぼうと思うと検索のダイアログが出てしまうなどという、いただけない状況に舌打ちすることになります。

設定後の効能

設定後、control panel のText input settingsを起動してOKを押すか(Tezさん情報)、電源ボタンを押し「Switch off!」で電源を切り、再起動すると以下のようなキーないしキーコンボで当該文字が入力できるようになっているはずです。

Chr -> Ctrl(Ctrlを左右二つにしたわけです)
Fn + Space → Tab
Fn + BS → Esc
Fn + m → "|"(ユーロをつぶします)
Fn + ; → "`"(ポンドをつぶします)
Fn + , → "["
Fn + . → "]"
Shift + Fn + , -> "{"(Shiftを押してからFn+,)
Shift + Fn + . -> "}"(Shiftを押してからFn+.)

カーリーブレースを割り当てた「Shiftを押してからFn+〜」というのは、Shiftが先でないとダメなので、親指でヒールアンドトゥーをするがごとくに操作をします。

親指タイピングを快適にするため、同時押しでなく、Shift、Fn、Ctrlなどのスペシャルキーを押してから次のキー、という操作ができるよう「sticky toggle latch」などという単語でググってますが、これという情報に当たらないですね。
できるようになる方法をご存知の方がいらしたらぜひ教えてください。

2008.1.24追記:「latchToLock LatchMods setxkbmap」などでググるとどうもそれらしき設定が……。

http://www.charvolant.org/~doug/xkb/

その他設定

標準のシェルである「ash」はショボいし挙動不審なので、「bash3」をインストールしました。
/etc/passwdを編集し、ログインシェルをbashにしました。

user:!:29999:29999::/home/user/:/bin/bash

また、busybox版で不満が残る「vi」は、「vim」で置換しました。
~/.profileに以下のように書いておきました。

alias vi=vim

このvim、UTF-8に対応していて日本語が扱えます。このエントリの一部もN810上のvimで書きました。

|

2008.01.10

[iPod touch]Mac OS XとiPod touch間で「Touchmods SIP-VoIP」を使って音声チャット!

Windows XPとiPod touch間で音声チャットができることは確認できたものの、普段Mac OS Xを使っている自分は、ぜひともMac OS XとiPod touch間で音声チャットをしたいものです。

前回のエントリ([iPod touch]iPod touchで音声チャット!「Touchmods SIP-VoIP」を試す
)にMac OS Xで使いたいという振りだけ書いておいたところ、utaaniさんがいろいろと教えてくださいました。
このお方、かなりお詳しいです。

utaaniさんからは、Mac OS X用のSIPクライアントとしてCounterPathのX-Liteをすすめてもらいました。
早速試すも、現行バージョンであるX-Lite 3.0は、Mac OS X Leopard(10.5.1)では動きませんでした。

CounterPathのForumをのぞくと、Leopardでは動かないという話が出ていました。
また、一つ古いX-Lite 2.0ならば10.5.1でも動作しているという話が出ていましたが、2.0は「X-Lite 2 for MAC is fully deprecated and no longer supported.」ということであり、CounterPathからはダウンロードできません。
このようなくだりをutaaniさんにお話しすると、

> (すでにサービス終了した)TaRaBaというVoIP プロバイダのページからダウンロードできますね。
> http://www.taraba.net/download/
>
> TaRaBaカスタマイズ版ですが別のSIP Proxyの設定は可能だと思います。

ということを教えてもらいました。別の名前で存在しているとは。
早速こちらのM2X-Liteを試してみると、Mac OS X Leopard(10.5.1)とiPod touchの間で無事音声チャットができました。

ここまでの段取りを書いておきます。

YouFonのアカウント取得

前回はFreeCallのアカウントを取得して試してみたわけですが、ラグが少々大きめでした。
iPod touch用SIPクライアントである「Touchmods SIP-VoIP」での利用実績がある、YouFonのアカウントを取得してみることにしました。

YouFonは国内のSIPサービスプロバイダで、何回かに1回、発信時に10秒ほどのCM音声を聞くことを代償に、無料で利用することができます。(料金を支払えばCMを止めることができます)
電話回線に接続するサービスはありませんが、その代わりにアカウント取得時にクレジットカード番号を入力する必要が無く、とても利用しやすくなっています。ググると、国内でのSIPプロバイダの中では人気があるようですね。

国内ということで、ラグが短縮されることが期待されます。

YouFonのアカウント取得はFreeCallに負けず劣らず簡単で、こちらのアカウント登録ページから始めることができます。
一通り情報を入力し終わり確認ボタンを押すと、遷移した画面で「YouFon有料アカウント登録フォーム>確認画面」と表示されギョっとしますが、これはYouFonのアカウントが有料だったときの名残かと思われます。

入力したメールアドレスにメールアドレス認証のためのURLが届き、そこにアクセスすると登録完了です。
登録が完了すると、親切なことに二組のYouFon番号とパスワードが付与されます。

以下の内容で、YouFon番号が追加されました。

■YouFon登録情報
-----------------------------------------
[YouFonサーバ名]
sip.youfon.net もしくは iax.youfon.net

[YouFon番号1](親YouFon番号)
81000000xxxxx

[YouFon番号1のパスワード]
xxxxxxxx

[YouFon番号2]
81000000xxxxx

[YouFon番号2のパスワード]
xxxxxxxx

これをMac OS X側とiPod touch側それぞれに入力すれば、すぐ実験が開始できます。
二つのYouFon番号は連番になっていると思います。

iPod touchで動作させる「Touchmods SIP-VoIP」側の設定

インストールに関しては、前回のエントリを参照してください。

[iPod touch]iPod touchで音声チャット!「Touchmods SIP-VoIP」を試す

「Username」欄にYouFon番号を、「Password」欄にYouFon番号のパスワードを、Registrarに「sip.youfon.net」と入力し、「Save」ボタンを押します。

ちなみに、僕の「Touchmods SIP-VoIP」は、Skinを入れ替えてあります。
Skinはこちらのページから入手可能です。

http://touchmods.net/skins/

ただの画像セットなので、自分で作ることも簡単です。

Mac OS X Leopardで動作させる「M2X-Lite」側の設定

Mac OS X Leopardの場合、CounterPathのSIPクライアント、「X-Lite 3.0」は動きません。
TaRaBaというVoIPプロバイダのページから、「M2X-Lite」という「X-Lite 2.0」のカスタマイズバージョンをダウンロードしてきます。
ダウンロードしてきた「X_lite-M2x-Mac.dmg」をダブルクリックでマウントしたら、Applicationsフォルダへ「M2X-Lite」をDrag & Dropでインストール完了です。

PowerPC用ですので、Intel Macでの動作は要確認です。

$ cd /Applications/M2X-Lite/Contents/MacOS/
$ file M2X-Lite
M2X-Lite: Mach-O executable ppc

「M2X-Lite」を起動すると、Windows風にWizard形式で音声入出力の設定を促されます。
それを適当にパスして、メニュー、そしてPreferencesダイアログの「M2X-Lite>Preferences...>System Settings>SIP Proxy」とたどり、「[Default]:xxxxxxxx」をダブルクリックします。
設定が正しいかは分かりかねますが、自分のところでは以下のような設定で動いています。
デフォルトはTaRaBaの設定になっているので、それを書き換えることになります。

「Display Name:」欄、「Username:」欄に付与されたYouFon番号を。「Password:」欄に呼応するYouFon番号のパスワードを入力します。
入力するYouFon番号、YouFon番号のパスワードは、二つ付与されたもののうち、無論iPod touchの「Touchmods SIP-VoIP」に入力しなかった方です。
後は見ての通りです。入力したら×印のクローズボタンを押してウインドウを閉じます。

メインウインドウの「Login」ボタンを押すと表示されるダイアログにも、YouFon番号とYouFon番号のパスワードを入力し、「Login」ボタンを押します。

メインウインドウの「CLEAR」ボタンを押し、液晶部分に「Logged - in Enter Phone Number」と表示されていればOKでしょう。

iPod touchから発信してみる

iPod touchで「Touchmods SIP-VoIP」を起動し、Mac OS Xの「M2X-Lite」側に登録したYouFon番号を入力し、「Dial」ボタンを押します。

うまくいっていれば、「M2X-Lite」が呼び出し音を鳴らし、Dock内のアイコンが跳ねはじめるはずです。

メインウインドウ内の緑のボタン、「Dial/Redial」を押すと、音声チャットが始まります。

もちろん、iPod touchにマイクをつないでいないとiPod touchから話すことはできません。
マイクは、touchmods.netで通販を受け付け始めています。最初の発送が始まったようです。
僕は自分で作ったマイクを使いました。

数は用意できませんが、当Blogでも頒布していますので、よろしければご利用ください。

当BlogのiPod touch用マイク関連エントリ

[iPod touch]iPod touch用Dock Connector一体型マイク頒布4号機完成
[iPod touch]iPod touch用Dock Connector一体型マイク頒布2号機、3号機完成
[iPod touch]iPod touch用Dock Connector一体型マイク頒布1号機完成
[iPod touch]Dock Connector一体型iPod touch用マイク頒布
[iPod touch]Dock Connector一体型iPod touch用マイク
[iPod touch]iPod touchにマイクを付けて録音実験

インプレッション

Mac OS Xでも、iPod touchとの間で音声チャットができました。
情報をくださったutaaniさん、ありがとうございました。

YouFonは前回使用したFreeCallよりラグが少なく、かなり自然な使用感で感激しました。

なお、一度接続した後、再度Dialすると音が途切れ途切れになったり、全くかからなかったりということが起きるようです。
現行バージョンの「Touchmods SIP-VoIP」は、Dialの度に終了させた方がよさそうです。
「Touchmods SIP-VoIP」を終了させると入力しておいた番号が消えて面倒ですが、「/Applications/SIP-VoIP.app/Call.png」に番号を書いておくと、番号を覚える必要が無くて便利です(笑)。

Mac OS X Tigerでは……

Mac OS X Tigerでは、何もわざわざ「M2X-Lite」を使わずとも、「X-Lite 3.0」が使えるものと思います。
後で試したらここに追記します。

|

2008.01.08

[iPod touch]iPod touch用Dock Connector一体型マイク頒布4号機完成

iPod touch用Dock Connector一体型マイクの4号機が完成。
マイクが無くなったので、表面実装用コンデンサといっしょに買ってきました。
今回はコンデンサを表面実装用のものに変更して組んでみました。

|

2008.01.02

[iPod touch]iPod touch用Dock Connector一体型マイク頒布2号機、3号機完成

iPod touch用Dock Connector一体型マイクの2号機、3号機が完成しました。
はー、目がシバシバする。

|

[iPod touch]iPod touchで音声チャット!「Touchmods SIP-VoIP」を試す

いよいよtouchmods.netでiPod touch用のSIP-VoIPアプリケーションが公開されたのでテストしてみました。
当該サイトの予告通りであれば、iPod touchで音声チャットができるはずです。

結論から書くと、僕が作ったマイクと、今回発表のiPod touch用SIP-VoIPアプリケーションとの組み合わせで、PCとの間で音声チャットができることが確認できました。

試行の手順を書いておきます。

SIP-VoIPのアカウント取得

僕はSIP-VoIPというものを利用したことがありませんでした。
予備知識ゼロの状態からのスタート。
まずはサービスプロバイダの選定とアカウントの取得です。

touchmods.netには、スタッフないし、利用者側で動作が確認されているSIP-VoIPサービスプロバイダが列挙されています。
そのどれを利用してもいいと思うのですが、開発側ではwww.freecall.comでテストしているとのことなので、それを利用することにしました。

テストに当たって、www.freecall.comのアカウントをPCのクライアント用に一つ、iPod touchのクライアント用に一つ取得しました。
アカウントの取得方法は至って簡単です。
サインアップフォーム(2008.1.2現在「Top>free download>MAC AND LINUX USERS CLICK HERE」とたどる)から一発Submitするだけです。

ちなみにwww.freecall.comでは、ユーザー同士、SIP-VoIPクライアント同士なら無料で音声チャットできます。
他のSIP-VoIPサービスプロバイダ同様、電話回線との通話をサポートしており、SIPのcreditを買うことで利用できますが、それ関しては、自分は全く利用するつもりが無い上に知識が無いので質問されても回答できません。www.freecall.comを使うと、日本在住の人と通話する場合に、日本に居ながらにして国際通話になってしまうでしょうし。

PC側の設定

音声チャットのために、PCに接続するヘッドセットないし、マイクとヘッドフォンが必要であることは言うまでもありません。
それらが使えるよう、設定を済ませておきます。

www.freecall.comからWindows用のクライアント、「FreeCall」をダウンロードしてインストールします。

「FreeCall」を起動。取得したユーザ名とパスワードを入力し、なおかつメインウィンドウの右端にある「Switch to speakerphone」ボタンを押してスピーカーアイコン内のバツ印が消えた状態にしておきます。これを忘れると音声が聞こえません。

スピーカーアイコンをクリックし、バツ印を消した後は、タスクトレイから一度「FreeCall」を完全に終了させます。
しかる後に再度起動します。この手順を踏まないと、スピーカーアイコンクリックの効能が有効にならないようです(2008.1.5追記)。


ipodtouchsipvoip01

現状のiPod touch用のクライアントでは待ち受けができないので、「Contacts」にiPod touch側で利用するアカウントを追加するのは意味がありません。

指定のポート以外、内側からのアクセスにおいても制限をかけるようFirewallを設定しているでもない限り、ルータ側の設定は不要のようです
詳しくは調査中ですが、NAT越えが問題になるかもしれません。自分の環境ではルータのUPnPをONにしています(2008.1.7追記)。

なお、マカーである自分にとっては残念なことに、www.freecall.comが提供するクライアントは、Windows用のみです。
別のOSでも利用できるようなクライアントが手配できるかもしれませんが、それは後の調査に回します。

www.freecall.com以外を使うケースについては当エントリでは扱いませんが、それはwww.freecall.com縛りであることを意味しません。

iPod touch側の設定

JailbreakしたiPod touchとマイク、もちろんヘッドフォンが必要です。

iPod touchのJailbreakについては、当サイトでは解説しません。Homebrewなアプリケーションが、Installer.appことAppTapからインストールできる状態にまで持っていってください。
当方ではJailbreakしたファームウェアのバージョン1.1.2のiPod touchでテストしています。

マイクは、touchmods.netで通販のpre-orderを受け付け始めています。
僕は自分で作ったものを使いました。

数は用意できませんが、当Blogでも頒布していますので、よろしければご利用ください。

当BlogのiPod touch用マイク関連エントリ

[iPod touch]iPod touch用Dock Connector一体型マイク頒布1号機完成

[iPod touch]Dock Connector一体型iPod touch用マイク頒布

[iPod touch]Dock Connector一体型iPod touch用マイク

[iPod touch]iPod touchにマイクを付けて録音実験

この度公開されたiPod touch用SIP-VoIPクライアントをインストールします。

「Installer.app」を起動し、「Sources」タブを選択。「Edit」、「Add」とボタンを押し表示されたダイアログに「http://touchmods.net/rep.xml」と入力、確定し、「Source」タブの「Refresh」ボタンを押します。

「Touchmods」カテゴリの中に「Touchmods SIP-VoIP」が現れますので、それをインストールします。

SpringBoardに「SIP-VoIP」という名前のアイコンが現れるはずですので、それをタップして起動します。

当エントリでは当該クライアントを「Touchmods SIP-VoIP」と表記します。
起動すると以下のメインビューが表示されるはずです。
「Account」ボタンを押し、さきほどwww.freecall.comで取得したアカウント情報を入力します。

「Username」にはユーザー名を、「Password」にはパスワードを、「Registrar」には、www.freecall.comなら「sip.voiparound.com」と入力します。

「Save」ボタン「Phone」ボタンと押し、メインビューに戻ってきます。

通話テスト

PC側で「FreeCall」を起動し、「Status」が「Online」になっていること、「Switch to speakerphone」ボタンが押されていることを確認しておきます。

iPod touchにマイクとヘッドフォンをつなぎ、WiFiをONにしてから「Touchmods SIP-VoIP」を起動します。

「Enter number to call」にPC側の「FreeCall」に入力したユーザ名を入力して、

「Dial」ボタンを押します。

すると、PC側で待ち受け状態にある「FreeCall」が呼び出し音を鳴らすので、緑色のボタンを押すと音声チャットが始まります。

インプレッション

Skypeすらロクに使ったことが無いので他との比較ができませんが、Skypeレベルの音質はあるような感じです。

www.freecall.comだとラグが500ms~1,000msぐらいあるでしょうか。ちょっと長めです。
他のSIP-VoIPサービスプロバイダだと、短かくなることもあるんでしょうかね。

今のところiPod touchからは発信しかできないので、iPod touch同士で通話をすることができません。

そのことが問題にならない用途なら、結構使えそうですね。
当Blogの過去のエントリで懸念してきたリブート問題も出ていません。

touchmods.netの当該エントリによると、「Touchmods SIP-VoIP」には随時機能が追加されていく予定で、待ち受けもできるようにするつもりもあるそうですが、それはまだ先の話ということで、最優先の課題にはなっていないようです。
iPod touchでの待ち受けはいろんな意味で不便で、なおかつ現実的ではないので、それは妥当な判断といえましょう。

なお、WiFi(というか、高速な無線通信デバイス全般)がモバイル機器のバッテリに与える影響の大きさを認識している人が少ないようですが、WiFiは一般に大飯食らいです。
WiFiによるバッテリの無駄な消費を防ぐために、無通信時には手抜きをするといった動作の省電力機能が働いているiPod touchですが、SIP-VoIPではWiFiが休まる暇が無いので、当然ながらバッテリの持続時間は短かくなるでしょう。

今後のテーマ

www.freecall.com以外に、よりラグの少ないSIP-VoIPサービスプロバイダを探すことが一つ。
マカー用のSIP-VoIPクライアントを探すことが一つ。
面白い発見があったら教えてください。

|

« December 2007 | Main | February 2008 »