« January 2008 | Main | March 2008 »

2008.02.19

[N810]NOKIA N810にAdvanced/W-ZERO3 [es]をモデムとして認識させられたけど……。

ipaq.cにAdvanced/W-ZERO3 [es]のベンダーIDとプロダクトIDを追加して作ったKernel Module ipaq.koと、ipaq.koが依存するusbserial.koをinsmodして、Advanced/W-ZERO3 [es]がモデムとして認識でき、/dev/ttyUSB0が出来ました。

[50928.820312] usb 1-1.1.1: new device strings: Mfr=1, Product=2, SerialNumber=3
[50928.820312] usb 1-1.1.1: Product: SHARP Windows Mobile USB Modem
[50928.820312] usb 1-1.1.1: Manufacturer: SHARP CORPORATION
[50928.820312] usb 1-1.1.1: device v04dd p91ac is not supported
[50928.820312] usb 1-1.1.1: uevent
[50928.820312] usb 1-1.1.1: usb_probe_device
[50928.820312] usb 1-1.1.1: configuration #1 chosen from 1 choice
[50928.820312] ipaq 1-1.1.1:1.0: PocketPC PDA converter detected
[50928.828125] usb 1-1.1.1: PocketPC PDA converter now attached to ttyUSB0

知らなかったんですが、insmod時にベンダーIDとプロダクトIDを指定できるんですね。
いちいちipaq.koをビルドする必要は無かったかも。

# insmod usbserial.ko
# insmod ipaq.ko vendor=0x04dd product=0x91ac

その先はやってませんが、N810にはpppするための道具が標準で入っているので、所定の手順でダイヤルアップはできるでしょう。

ただし……。

そのままつないだのではKernel Moduleがロードされませんでした。
Advanced/W-ZERO3 [es]の消費電力がN810のバスパワーの供給電力を超えると判断されたからのようです。
ようですってか、エラーメッセージはそう告げています。

[52913.085937] usb 1-1: rejected 1 configuration due to insufficient available bus power
[52913.085937] usb 1-1: no configuration chosen from 1 choice

それならばと、電源供給機能のあるUSB HUBを経由してつないだところ、Kernel Moduleがロードされ、/dev/ttyUSB0が出来たわけです。

かといって、N810よりデカくかさばるので、バッテリ駆動かつ電源供給可能なUSB HUBを持ち歩く人は居ないでしょう。

実際のところ、Advanced/W-ZERO3 [es]はN810からの電源供給を受けずとも動作可能でしょうから、Kernelの、configurationを選択する部分にパッチを当てて無理矢理使うことはできそうです。

この辺の判定をしているのは、

/drivers/usb/core/generic.c

にある、

static int choose_configuration(struct usb_device *udev)

という関数のようですね。ここをいじればあるいは……。
手段として間違っている気がしますが。

期待させると悪いのであらかじめ断っておきますが、この問題解決を完遂せずに飽きる可能性大。

2008.04.29追記:すいません。アホやってました!「設定>パワー マネジメント>USB給電」を「給電する」に設定していたから弾かれたのでした。「給電しない」に設定したら、Hubを介すること無くモデムとして認識され、/dev/ttyUSB0が出来ました。

|

2008.02.17

[N810]NOKIA N810用FDclone2.09g、lv4.51、nkf2.0.8bパッケージ

NOKIA N810でも、FDcloneとか欲しいよなということで、パッケージを作ってみました。

/usr/local/以下、実行ファイルは/usr/local/binに入るので、PATHの設定が必要です。.profile、あるいはbashを入れていれば.bashrcなどに追記。

export PATH=$PATH:/usr/local/bin

ダウンロード

無保証なので自己責任で試してください。

2008.2.18追記: すいません。Red Pillモードにしないと僕のパッケージはインストールできませんでした。Red Pillモードへは、Application managerを起動し、メニューのTools>Application catalogを選択してダイアログを出し、Web address欄にmatrixと入力し、closeボタンを押すと表示されるダイアログで移行できます。

オフィシャル:FDclone

「fdclone_2.09g_armel.deb」をダウンロード

オフィシャル:lv

「lv_4.51_armel.deb」をダウンロード

オフィシャル:nkf

「nkf_2.0.8b_armel.deb」をダウンロード

補足

FDcloneのパッケージインストール時、UTF-8環境に合わせた/home/user/.fd2rcを作ります。
既に存在した場合はorg.fd2rcとして退避します。次回からは上書きされますので注意してください。

lvを入れたら、.fd2rcのPAGERのところのコメントを外してください。-Iaでファイルのエンコーディングが自動判定されるはずですが、sjisやeucでは判定が失敗してしまいますね。-Is(sjis)、-lej(euc-jp)で明示すると読めますが……。osso-xtermはutf-8なので、-Ou8は固定でOKです。

編集用のエディタを指定する場合は、.fd2rcにEDITORの項目を作って指定します。

EDITOR=vim

lvで常に-Ou8が指定されるように、.profile、.bashrcなどにも以下のように書いておくといいかもしれません。あんまり信頼ならないようですが、一応-Iaも書いておくといいかも。
lvでテキスト読みをすると、jとkでスクロールできるので、片手操作によいかもです。

export LV='-Ou8 -Ia'

2008.03.03追記:上記の設定をしてもいまいち不便なのでヘルパースクリプトを書きました。[N810]NOKIA N810でFDclone/lvを便利に使うためのヘルパースクリプト

インプレッション

やっぱfdあると落ち着くわ。

|

2008.02.16

[N810]NOKIA N810で強制USB HostモードとOn-The-Goモードとを一発で切り替える

NOKIA N810にUSB機器を、標準添付のUSBケーブルとジェンダチェンジャを使って接続する際に必要な、強制USB Hostモードへの移行とOn-The-Goモードへの復帰を一発で実行できるスクリプトを書いてみました。

関連エントリ:

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

[N810]NOKIA N810で使うUSB Aオスのジェンダチェンジャを作ってみた

ダウンロード

2008.02.20追記: なぜかruby1.8とruby1.8-maemoに依存したパッケージにしていたので修正しました。また、インストールにはRed Pillモードにする必要があります。Red Pillモードへは、Application managerを起動し、メニューのTools>Application catalogを選択してダイアログを出し、Web address欄にmatrixと入力し、closeボタンを押すと表示されるダイアログで移行できます。

「usbswitch-0.1.armel.deb」をダウンロード

使い方

「becomeroot」をインストールするか、R&Dモードに変更するなどで「sudo gainroot」実行でルート権限のシェルが実行できるようにしておく必要があります。

File managerからタップするなどでインストールすると、ランチャのExtrasの中に「USB Switch」という項目が出現します。

これを実行すると「USB Hostモード」と「On-The-Goモード」の間で交互に切り替えできます。


|

2008.02.08

[N810]NOKIA N810でキーボードからランチャー起動やタスクスイッチなどをする

NOKIA N810を使っていて不便に思うのは、キーボードからランチャーが起動できないことです。全画面にして使うことが多いので、自分にとっては結構深刻な問題なのです。

タスクスイッチは液晶左のボタンでできますが、ひっかかりがあって何とも押しにくい。キーボードからタスクスイッチができたらさぞかし便利でしょう。

どうにかならないものかと思ったら、どうということはない、control panelから設定できました。

設定方法

  • 「control panel>Bluetooth keyboard」を起動
  • 「Shortcuts」タブを表示
  • 「Task launcher」を選択し、「Edit」ボタンを押す
  • 右Ctrlを押してから右Shiftを加えて押し、Aをさらに押す(CtrlとShiftの順番が逆ではダメ)
  • 「OK」ボタンを押す
  • 「Task switcher」を選択し、「Edit」ボタンを押す
  • 右Ctrlを押してから右Shiftを加えて押し、Sをさらに押す(CtrlとShiftの順番が逆ではダメ)
  • 「OK」ボタンを押す
  • 「OK」ボタンを押して「Bluetooth keyboard」を閉じる

これで、N810のキーボードから、設定したショートカットで「Task launcher」、「Task switcher」の起動ができるようになったと思います。

そう、「Bluetooth keyboard」といいつつ、ここで設定したショートカットは内蔵キーボードでも有効なのですね。

右Ctrlと右Shiftは、右の親指でヒールアンドトゥーの要領で二ついっぺんに押します。使用時も、設定時同様Ctrlの方を先に押さないとダメです。

ちなみに、USBキーボードでも有効です。

実際は右のShiftが若干押しづらいですし、しくじるとCtrl+SやCtrl+Aを押してしまう(この付近のキーだとどれもいただけないショートカットになりますよね)ので、キーボードカスタマイズで「Chr」キーを「Ctrl」に変更し、左Shift+左Ctrl+L、Kといった感じの設定にする方が使いやすいと思います。僕はそうしています。

ただでさえ固いN810のキーを二つ同時に押すのは相当キツいですが、こればっかりはどうしようもありません。気合でどうにかするほかありません。

XKBの設定でスペシャルキーをlatchedにできることは分かっていますし、一般的なLinuxのデスクトップ環境なら、Universal Accessの機能の一つとして標準でできることは確認していますので、ぜひともN810でも同時押しでなく、順次押しで済むlatch設定をしたいものですが、XKBの機能が高度で、きちんと書式と機能を理解しないと、どう書いていいものか見当が付きません。

|

[N810]NOKIA N810内蔵GPS問題を改善するパッケージに副作用があった

先日エントリした「[N810]NOKIA N810内蔵GPSの測位が遅い問題を改善するgpsd関連のパッケージが登場」で紹介した、内蔵GPSの測位が遅い問題を改善するgpsd関連のパッケージですが、みなさんからいただいたレポート、トラックバック元の記事を読ませていただくと、効能は確かのようですね。

NOKIA N810内蔵のGPSは、あまりGPSシーンで名前が挙らないTI製ということもあってか、バグを回避しても「すっげえ早くなった! 最強!」みたいな感じではなさそうですが。

僕はといえば、なかなか地上に出る時間が取れず、今のところ試せずじまいです。

そんな素敵なパッケージではあったわけですが、作者Jussi Kukkonen氏のブログに、Owen Williams氏から次のようなコメントが投稿されているということをZachさんから教えてもらいました。

**要注意** 上でリンクされているパッケージをインストールしたら、aptコマンドが文句を言うようになったよ。apt-get upgradeやらを再び使えるようにするために、オリジナルのosso-gpsdパッケージをインストールするハメになった。 ビルド済みのパッケージが見当たらなかったので、実際にはSDKのscratchboxを使ってosso-gpsdのパッケージをソースからリビルドする必要があったよ。 そんなわけなんで、用心してね。

Jussi Kukkonenはこれに対し、

Owenありがとう。パッケージを1.0-25 debにアップデートしてアップしておいたよ。 予期せぬトラブルに巻き込んでしまって、みなさんごめんなさい。 osso-system-versionが特定バージョンのosso-gpsdに依存しているので、(訳注:対策パッケージをインストールしたままで?)Maemoのシステムパッケージをすっきりとアップデートする方法は無いみたいだ。

今上がっているパッケージをインストールすれば副作用を回避できるのは確かでしょうが、Jussi Kukkonenのコメントの文脈から、osso-gpsdもバグありの標準状態に戻り、うるう年バグはそのままかもしれません。実際に試していないのでよく分かりません。検証した方がいらしたら教えてください。

いずれにせよ2月28日を過ぎれば、バグ持ちのgpsdでもN810内蔵GPSの測位スピードは本来の状態に戻り、4年後の次のうるう年までこの問題は表面化しないそうですので、この件で腰が引けた方も、あと3週間の辛抱です。

対策パッケージをインストールしてGPSの測位が早くなった恩恵を受けていて、当面困ったことが起きていなければ、あと3週間はそのままにしておくのも選択肢の一つかもしれません。

1.0-25 debは、最初に対策パッケージがアップロードされていた以下にあります。

http://folks.o-hand.com/jku/osso-gpsd/

|

2008.02.07

[N810]NOKIA N810上のEmacsからbrowse-urlする! browse-url-osso-browser.el

NOKIA N810でEmacsを使っていて不便なのは、とりあえずクリップボード連携ができるようになった今、Emacs上でURLを踏んだときにブラウザでブラウズできないことです。

というわけで、以前bg66さんが公開してらしたLinux Zaurus向けのElispであるbrowse-url-netfront.elを改造して、NOKIA N810の標準ブラウザであるosso-browserにURLを渡すElisp、browse-url-osso-browser.elを作ってみました。

bg66さん、今はどこでどうされているやらではありますが、ありがとうございます。

これをbrowse-url-browser-functionに登録し、Navi2chのスレ内等に登場するURL上でEnterを押せば、osso-browserでブラウズできます。

ダウンロード

「browse-url-osso-browser.el」をダウンロード

一応中身も貼っておきます。

;; To use, add the following line to your .emacs:
;; (autoload 'browse-url-osso-browser "browse-url-osso-browser" "" t)
;; (setq browse-url-browser-function 'browse-url-osso-browser)

(defcustom browse-url-osso-browser-program "browser_dbuscmd.sh"
  "The name by which to invoke the osso web browser."
  :type 'string
  :group 'browse-url)

(defcustom browse-url-osso-browser-before-args nil
  "*A list of strings defining options for `browse-url-osso-browser-program'."
  :type '(repeat (string :tag "Argument"))
  :group 'browse-url)

(defcustom browse-url-osso-browser-args '("open_new_window")
  "*A list of strings defining options for `browse-url-osso-browser-program'."
  :type '(repeat (string :tag "Argument"))
  :group 'browse-url)

(defun browse-url-osso-browser (url &optional new-window)
  "Ask the Osso-Browser WWW browser to load URL.
Default to the URL around or before point."
  (interactive (browse-url-interactive-arg "Osso-Browser URL: "))
  (message "Sending URL to Osso-Browser...")
  (apply #'start-process `(,(concat "Osso-Browser" url) nil
               ,@browse-url-osso-browser-before-args
               ,browse-url-osso-browser-program
               ,@browse-url-osso-browser-args ,url))
  (message "Sending URL to Osso-Browser...done"))

インストール

browse-url-osso-browser.elをload-pathの通ったところに置き、以下を.emacs.elに追記。

(autoload 'browse-url-osso-browser "browse-url-osso-browser" "" t)
(setq browse-url-browser-function 'browse-url-osso-browser)

制限

ただし、既に少なくとも一つはosso-browserでウインドウを開いていないとダメという制限があります。 結構不便なのでどうにかしたいんですが、Windowsで言うところの「start」、Mac OS Xで言うところの「open」に相当するコマンドは無いもんでしょうかね。dbus-launchというコマンドがありますが、これはちょっと意味合いが違いそうです。

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

|

2008.02.06

[N810]NOKIA N810内蔵GPSの測位が遅い問題を改善するgpsd関連のパッケージが登場

NOKIA N810内蔵GPSの評判がかんばしくありませんが、これはうるう年問題に関係するgpsdのバグに起因するもののようです。

Jussi Kukkonen氏のブログのエントリ「Solution to N810 GPS problems?」に、対策パッチを当てたgpsd関連のパッケージがアップロードされています。
バグは2008年1月1日から2008年2月28日まで、タイムスタンプが86,400秒進んでしまうというもので、これが原因で、前回の測位情報が参照されないということが起こっているようです。

曰く、「ここ最近は、NOKIA N810のGPSにある、初回の測位までが遅い問題がどうにかならないものかと試行錯誤していたよ。そしていい結果が出たので紹介しよう: これまでは、とてもいいコンディション下であっても、測位には少なくとも5分から15分かかっていた。今日試したところ、以前はほとんど測位が不可能だった、室内窓際からというシチュエーションでさえ、測位まで30秒から3分で済んだ」
「パッケージをインストールした後の最初の測位は、以前同様長い時間がかかるだろう。でも、次の測位から早くなるはずだ」

このエントリに寄せられたコメントは、「N810内蔵GPSは初回の測位までが遅かったからBluetooth GPSを使っていたけど、このパッケージをインストールしたら内蔵GPSでも40秒ほどで測位するようになったよ! ありがとう! オープンソースの持つ力を象徴する事例の一つになったね!」などといった絶賛の嵐。

ちなみに、N810内蔵GPSはTI製で、E90に搭載されているものと同じだそうです。

僕はまだインストールしただけで試してませんが、試された方どうですか?

|

2008.02.05

[N810]NOKIA N810でもMBROLAを使って日本語音声合成

多言語対応音声合成エンジンMBROLAをNOKIA N810で動かしてみました。

基本的に、以前Linux Zaurusでやったのと同じです。

とりあえず試してみる

NOKIA N810で動くMBROLAのバイナリ(ソース配布は無し)は、LINUX / Pocket PC版です。

三つの実行ファイルが入っていますが、ライブラリがスタティックリンクされたmbrola-linux-strongarm2-staticだけが使えました。

実行ファイルのほかに音素ファイルが必要です。

日本語用音素ファイルにはいろいろあるのですが、発声マクロ生成に使うmuDaTTSがjp2のみをサポートしている都合で、jp2 (jp2: Japanese Female (5.6Mb) Tomohisa Tachiki)で試してみます。

試行の手順としては以下の通りです。wgetは標準では入ってませんが、osso-browserでダウンロードするなどで適当に。

$ mkdir mbrola
$ cd mbrola
$ wget http://tcts.fpms.ac.be/synthesis/mbrola/bin/pocketlinux/mbr301h.zip
$ wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/jp2/jp2-270202.zip
$ unzip mbr301h.zip
$ unzip jp2-270202.zip
$ ls
mbrola-linux-strongarm
mbrola-linux-strongarm2
mbrola-linux-strongarm2-static
jp2
$ chmod +x mbrola-linux-strongarm*
$ ./mbrola-linux-strongarm2-static jp2/jp2 jp2/test/kon1.pho kon1.wav
$ play-sound kon1.wav

NOKIA N810上で動作させたMBROLAで生成したWAVファイル

jp2に同梱のkon1.phoで生成したWAVを置いておきます。

「kon1.wav」をダウンロード

インプレと展望

テキストから発声マクロを生成するツールに、muDATTSというRubyスクリプトが存在します。

これをLinux Zaurusで動作させた実績があるので、既にRubyがPortされているNOKIA N810でもそれが流用できると思います。ChaSenとKAKASIをPortしないといけませんが……。KAKASIとRuby/KAKASIはすんなりビルドできました。

メモリが64MBしか搭載されておらず、スワップを作ってもQtが強制的にアプリを落としてしまうZaurusでは、MBROLA+muDATTSは結局実用的に使えませんでしたが、NOKIA N810では実用可能な雰囲気です。

ただし、muDATTSで生成できる発声マクロは、抑揚の無いものです。kon1.phoのような抑揚は付きません。

先ほどのkon1.wavが高品質で感動するかと思いますが、テキストからこのレベルの発声マクロを出力するツールは存在しないようなので、kon1.phoは、VOCALOIDよろしく職人芸によって作られたデータなのでしょう。

以下に挙げた当ブログの関連エントリにサンプルを上げていますので、参考にしてみてください。

Zaurusで日本語音声合成 MBROLA+muDaTTS

(実践編)Zaurusで日本語音声合成 MBROLA+muDaTTS

Zaurusで日本語音声合成 zmuDaTTS.rb v 0.2

[Zaurus]Zaurusで日本語音声合成 zmuDaTTS.rb v0.3

僕がZaurus用に改造(改悪)した版のzmuDaTTSはNOKIA N810でも基本的に使えると思いますが、読み上げ用の辞書ファイルをZaurus依存のパスにしていたりSoXを使っていたりで修正は必要です。

|

2008.02.02

[N810]NOKIA N810で使うUSB Aオスのジェンダチェンジャを作ってみた

NOKIA N810に付属のUSBケーブルCA-101でUSB機器をつなぐのに使えるUSB Aメス<>Aメスアダプタ(いわゆるジェンダチェンジャ)を自作してみた。

関連エントリ:[N810]強制USB HostモードでNOKIA N810にUSB機器をいろいろ接続

既に市販品を持っているので必要無かったのだけど、Host/On-The-Goモード判別ピンをこっち側で処理すればいいんでは? と思って深く考えずに部品を買って、作業にかかる段階でやっとそんなことができないことに気がついた。

母艦側のUSB Aコネクタはモードセレクトをする必要が無いので、モード判別ピンは出ていないのだ。って、そんなこと常識だっつーの。

しかし、買った部品が勿体無かったので、とりあえず普通のジェンダチェンジャを作ってみた。

サイズは市販の同等品より小さくなったので、一応面目躍如かな。

基板実装用のUSB Aメスコネクタを二つ組み合わせて瞬間接着剤で結合。くつひもを結ぶような感じでクロスさせて配線。

長めに切った熱収縮チューブをかぶせ、加熱してピチピチにし、余分なところをカッターで切断して出来上がり。

意地でもこれを使うことにした。

|

« January 2008 | Main | March 2008 »