BluetoothからGPS接続

10 月 26th, 2008

さて、今回は本命のBluetooth経由でのGPSへの接続です。

とりあえず、何をするにも楽なPC上のLinuxで確認です。まずはBluetoothでの接続ですが、

$ hcitool scan
Scanning ...
        00:11:22:33:44:55       HOLUX_M-241
$ sdptool browse 00:11:22:33:44:55
Browsing 00:11:22:33:44:55 ...
Service Name: SPP Slave
Service RecHandle: 0x10000
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1

とのことなので、/etc/bluetooth/rfcomm.confに

rfcomm0 {
    bind yes;
    device 00:11:22:33:44:55;
    channel 1;
    comment "HOLUX_M-241";
}

と追加、

# /etc/init.d/bluetooth restart

とします。これで/dev/rfcomm0にアクセスするだけで自動的にBluetoothで接続されるようになります。

以上の手順をZaurusでも試したところ、無事GPS接続が出来るようになりました。

また、PCではM-241に保存されたログはMTKBabelで取り込みます。

$ mtkbabel -s 38400 -f gpsdata -t -w -p /dev/rfcomm0

とするとgpsdata.binとgpsdata_{trk,wpt}.gpxのGPX形式のログが出来るので、これをGPSBabelでKML形式に変換します。

$ gpsbabel -i gpx -o kml,units=m gpsdata_trk.gpx gpsdata_trk.kml

なお、USB経由でのログの取り込みはデバイス名を適当に変更すればOKです。

これをGoogle Earthで表示すると、こんな感じにめでたくルートが表示できるようになりました。

とまぁこれで十分と言えば十分なのですが、出先でM-241のログの取り込みや消去、走行ログの確認をZaurusで出来れば重いノートPCを持ち歩かずに済んで大変便利です。ということで、これらのZaurus用のパッケージを作ってみました。

あらかじめ、Linuxザウルス/Perl - Walrus, Visit.さんなどからPerlのダウンロード、インストールをお願い致します。なお、ZaurusでのMTKBabelでのログの取り込みはBluetoothの通信が不安定なのかエラーが頻発しますが、とりあえず動作するようパッチを当ててあるのでデータに問題は無いはずです。

なお、GPSBabelはNMEA形式のログ出力も出来るので、HB1さまのZegaで走行ログを表示できるはずです。私はちょっと確認できませんでしたが…。

Bluetooth CF到着

10 月 20th, 2008

注文していたBluetooth CFが先日届きました。Socket社のBL4535-634です。待ってたぞー!ということでいそいそと箱から出し、あらかじめPC用のBluetooth USBアダプタでLinuxでの設定は把握していたので、早速Zaurusにつけて動作確認しようと意気込んでいたのですが、…動かない。この商品に動作報告があることは事前に確認してあったのに!ということで、今回はこのCFに関する顛末記です。

ちなみに右が同時に購入したPC用Bluetooth USBアダプタ。一見スマートで良さげに見えるのですが、PCに差してしまうと極めて取り外しづらいという問題が。まぁ、それ以外の使い勝手はなかなか良い感じです。しかし、USBの上の黒い部分が本体なのでしょうが、これが1400円で買えるのにCFになると何故16000円になってしまうのでしょうか。謎です。

まぁ何はともあれ、ドライバとツール群のインストールです。今回はこちらのbluez-zaurus_2.3-2.4.18d_arm.ipkを利用させて頂きました。

# cardctl ident
Socket 0:
  product info: "Socket", "CF+ Bluetooth Card CIS Rev 2.5"
  manfid: 0x0104, 0x0096
  function: 2 (serial)
# hcitool dev
Devices:

ふむ、とりあえずカードの認識はされているようですが、Bluetoothとしては認識されていません。というか、ドライバのロードすらされていないようです。確かに/etc/pcmcia/bluetooth.confを確認しても対応したエントリはありませんでしたが、

card "Socket Bluetooth Card"
  version "Socket", "CF+ Personal Network Card"
  bind "dtl1_cs"

とそれっぽいものはありましたので、定石通りこれを参考に型番だけ変更した設定を追加してみました。そして、カードを差した瞬間、ハング。

さすがに焦って調べていると、型番に2.5とあるものはリビジョンGかそれ以降であり、入っているチップもNokiaのものからCSRになっていることが判明。確かに仕様にはチップがCSR BC04-EXTであると書いてありますが、こんなとこ見るか!暗雲が立ち込め始めたものの、とりあえずドライバを変更して

card "Socket Bluetooth Card"
  version "Socket", "CF+ Bluetooth Card CIS Rev 2.5"
  bind "serial_cs"

に。これで動作するかと思いきや、

# hciattach ttyS3 bcsp 230400 noflow
BCSP initialization timed out
# hciattach ttyS3 any
# hciconfig
hci0:   Type: UART
        BD Address: 00:00:00:00:00:00 ACL MTU: 0:0  SCO MTU: 0:0
        DOWN INIT RUNNING
        RX bytes:0 acl:0 sco:0 events:0 errors:0
        TX bytes:4 acl:0 sco:0 commands:1 errors:0
# hciconfig hci0 up
Can't init device hci0. Connection timed out(110)

…もう流石に無理かと思いつつ、諦め悪く手を変え品を変えて調べ回っていると、ここにごくごくあっさりとしたコメントを発見。曰く、cardctl resume 0したら動いた。いやいや、cardmgrからは見えてるし関係ないだろそれとか思いつつ、藁にもすがる思いで試してみると…

# modprobe hci_uart
# cardctl resume 0
# hciattach ttyS3 bcsp 230400 noflow
# hciconfig hci0 up

動きました!ここまで来るのにえらい時間がかかったので、感動もひとしおです。

とまぁ動作させられるようになるまでをだらだらと書いてきましたが、実は裏ではkernel 2.4.36.7のドライバをバックポートするなど他にもいろいろやってます。教訓としては、ものによってはcardctl resume 0すると動くこともあるという事でしょうかね。同様の症状に悩まされている方は参考にでもしてやって下さい。

qgmap 0.1.0リリース!

10 月 15th, 2008

ぷちのいずでbucchiさまが開発されておりましたGM_Lite互換のZaurusネイティブアプリqgmapですが、先日とうとうバージョン0.1.0がリリースされました!開発開始から1ヶ月とちょっとでありながら非常に完成度が高く、実用上のツボを抑えたとても使い勝手のよいソフトです。

よいところは多々ありますが、特筆すべきはそのスクロールの軽快さです。もうめちゃくちゃ軽いです!GM_Liteなど比較にならず、一度体験してしまうと癖になること請け合いです。また、指定した縮尺の地図がない場合は広域の地図を拡大して使用する機能もあり、地図容量の節約にも有用です。GM_Liteが動作していればインストールは非常に簡単ですので、ぜひとも一度お試し下さい。

今のままでも機能的には十分でありながらもまだまだ発展途上であり、最新の記事ではbucchiさまが今後の方針についても語られております。今後より一層素晴らしいソフトになるだろうqgmapにますます目が離せません。

GPS買いました

10 月 11th, 2008

はい、買ってしまいました。液晶付きGPSロガー、Holux M-241です。12600円とかなり高めだったのでしばらく悩みはしたものの、使わない金に価値は無し!ということで、清水の舞台から身投げしてみました。

これを選んだ理由はいろいろとありますが…

  • 液晶に緯度、経度を表示可能
    • 地図をCFに入れておいても大丈夫
  • GPSのログを取れる
    • スタンドアロンでログを取ってくれるのでお手軽
  • USB/Bluetoothデュアルインターフェース
    • SDに地図、CFにBluetoothでナビもできる
  • 単三電池で動作
    • これを設計した方はよく分かっていらっしゃる

まさにZaurusのためにできたようなGPSです。以前ちゃびさまからお薦め頂いたものとは型もチップも違いますが、個人的には大満足!さっそくあちこち連れ回してみるつもりです。

こないだまで私にとってGPSは特に欲しいものではなく、開発用にもどうかなぁといった所でしたが、購入のきっかけになったのは先日の旅行です。初めてのヨーロッパであちらの風土にいたく感激した私は、一日取れた休みにライン川沿いをサイクリングしてみたい!といそいそと自転車をレンタルし、調子に乗って地図も持たずに一人で出発したのですが、しばらく走っているうちに気づいたらこんなところに。

いやいや、どこですかここ。地図もなく、道もなく、ただ目的地の方角だけしか分からないドイツの片田舎。幸い日の暮れる前に目的地には到着できましたが、自分についていろいろと考えさせられた出来事でした。

来週には身投げ第2段、Bluetooth CFカードが届く予定です。こないだガタの来ていた予備機の修理も終わり、これでまだまだZaurusを使っていけそうです。GPS+Bluetooth環境が揃うことでよりGM_Liteの開発に弾みがつく…といいなぁ…。

Qualendar 1.0.1公開

10 月 4th, 2008

今回はあっさりと、Qualendar 1.0.1の公開です。

これまでQualendarはLinux版pdaXrom版を公開してきましたが、kanonさまを始めこれらをお使い頂いている方もいらっしゃるようですので、一応Zaurus版も公開しておきます。Qualendar 1.0.0からの変更点は以前の記事の通りです。

なお、SQLiteデータベースを使うと恐らくPCとの同期が取れなくなりますが、代わりに同じデータベースファイルを使うことで各環境での予定、ToDoの共有が可能になります。データベースファイルは~/.qualendar/qualendar.dbにあり、

$ sqlite3 ~/.qualendar/qualendar.db .dump

とすることで内容を確認できます。

インストールは

です。宜しければどうぞ。

GM_Lite 0.1.4公開

9 月 29th, 2008

さてさて、今回はGM_Lite 0.1.4の公開です。

今回の更新の目玉は、Windows環境での地図のダウンロードの高速化です。ここのところbucchiさまが大変有難いことにGM_Lite互換のZaurusネイティブアプリになりますqgmapを開発され、またHB1さまが高度なGPSとの連携機能を持つZegaにGM_Liteの地図の表示に対応して下さるというとんでもない事態になっており、ここでダウンローダが不出来なばかりにお二人にご迷惑をおかけするわけにはイカン!ということで、以前から問題になっておりました、地図のダウンロードが遅いことと環境依存でエラーが発生する問題に対処致しました。

従来版と高速版でおおまかなベンチマークを取ってみたところ、以下のようになりました。

  • “全世界”のダウンロードにかかる時間
    • 従来版:17分53秒
    • 高速版:3分50秒
  • “全世界”がダウンロード済みの時のスキップにかかる時間
    • 従来版:12分9秒
    • 高速版:3秒

テスト環境がWin2k on VMwareであったため実機ではもう少し速くなると思われますが、ご参考まで。

高速版ダウンローダの実行にはWindowsでのPerl実行環境であるActivePerlが必要になります。あらかじめダウンロード、インストールをお願い致します。

実行はcygenv/down_imgs2.batをダブルクリックするだけです。また、ダウンロード範囲の指定にはbin/down_imgs.plを修正して下さい。従来のものから若干フォーマットが変わっておりますが、サンプルを参考にすればすぐにお分かり頂けると思います。

また、細かい変更点としては、みじまさまとちゃびさまからのフィードバックを反映させました、gps_zauのGPS初期化処理と緯度、経度情報の取得の高速化があります。今回の更新にあたりヒントを下さいましたabuさまにもここに改めてお礼申し上げます。

今回のファイルは

です。アップグレードの際はgm_lite/bin/とgm_lite/cygenv/のみ新しいものと入れ替えて頂ければOKです。

これまでダウンロードが遅い遅い、と言われつつも正直そんなに遅いとは思っておりませんでしたが、今回改めてWindows環境でダウンロードしてみて驚きました。なんでしょうかこの遅さは。まさかCygwinがこんなに遅いとは。これまで苦情を下さった皆様にはお待たせしてしまい、大変申し訳ありませんでした。

では、何かご不明な点がございましたらお気軽にどうぞ。

今この辺です

9 月 21st, 2008

前回の記事でも少し書きましたが、強制イベント発生につき現在海外に来ています。今この辺にいます。

もしこれで分かった方がいらっしゃいましたら素晴らしい。地理に疎い私のこと、一週間前に見せられたとしたら分からなかったに決まってます。ちなみに、これはここの市庁舎らしいです。15世紀半ばに建てられたそうですが、手設計、手作りでよくもまぁ…。それまでにどれだけの知識、技術の研鑽があって、その建築にどれだけの人が知恵を出し合い、労力、情熱を傾けたかと思うと、ここに人の文化というものの一つの極みを見た思いです。

きっとソフトウェアの世界もこの建築物のようなもので、いろんな人が少しずつ力を出し合って、よってたかって組み上げていくものなような気がします。私もその建築の一端を担えれば嬉しいなぁ。

ところで、ここ一週間にコメントを頂いた方にはお待たせしてしまい、大変申し訳ありません。私は文章を考えるのにかなり時間がかかってしまうたちなので、まとまった時間が取れるまでもうしばらくお待ち下さいませ。

Qpdf3 for pdaXrom 0.1.2公開

9 月 12th, 2008

ようやく完成しました、Qpdf3 for pdaXromの公開です。

今回は以前kanonさまからご要望のありました、Qpdf3のpdaXrom版を作ってみました。使い方はQtopia環境と同様です。

インストールは、feedからqt-mtのインストール後に

を全てインストールして下さい。また、実行前には日本語フォントのインストールと登録が必要です。一応

も/usr/X11R6/lib/X11/fonts/TTFかどこかにインストールし、

$ fc-cache -v

したほうが無難かもしれません。

以上です。なにかご質問等ありましたらお気軽にどうぞ。

ところで、今月は明日から25日まで海外に行かなければならず、現地のネット環境によってはコメントを頂いたとしても返信が難しいかもしれません。あしからず。

SL-C3×00でも漢字辞典

9 月 6th, 2008

のぼぶろぐさんのこちらの記事で紹介されていたのですが、Zaurusの三桁機種やC1000には漢字辞典が入っているそうです。ということで、私も早速試してみました。

…いやいや、こんなのが入っているなんて今回初めて知りました。驚きです。割と使いやすそうですし、知るきっかけとなったbxk07344さまには大変感謝! なお、私は結構忘れっぽいので、登録を自動化しようとアイコンだけパッケージにしておきました。

宜しければどうぞ。

しかし、これだけというのも何なので、前回アップしたjffs2readerを使ってSL-C3×00用に辞書データを入手する方法をご紹介します。

  1. まず、Conics.NetさんのこちらのページからSL-C1000のNANDバックアップイメージを入手
  2. 次に、get_gdbkdic-0.1.0.zipをダウンロードし、C:\ドライブ直下等へ展開
  3. SL-C1000-JPN-NAND-original.zipを展開し、出来たDBKファイルを2のフォルダに移動
  4. get_gdbkdic/cygenv/get_gdbkdic.batをダブルクリック
  5. 作成されたget_gdbkdic/dic/をZaurusにコピーし、/opt/QtPalmtop/以下に移動

私はSL-C3×00を持っておりませんので実際に確認を取ったわけではありませんが、これで多分、動くはずです。ご質問等ありましたらお気軽にどうぞ。

ちなみに、先の記事に貼ってあるスクリーンショットにQpdf3のアイコンが写ってます。ちょっと嬉しい。


追記:

のぼぶろぐさんの最新の記事では別の方法で辞書データを取り出しており、成功例をスクリーンショット付きで紹介されております。bxk07344さまのほうがよりスマートなアプローチをされているので、ぜひともご参照下さい。

Zaurus破損ファイルの復旧

9 月 5th, 2008

wznotes.txtが壊れました。

今まであらゆるメモを書き溜めてきたwznotes.txtが壊れました。

ちまちまブログの文章を考えて、たまたまZaurusに再起動をかけて、いざ記事にしようとして開いてみたら、後ろから1/4程度が吹き飛んでました。

流石に、血の気が引きました。

そろそろ年季も入ってきて再起動がかかる度にファイルシステムのエラーが蓄積してはいましたが、こうも大きなダメージを受けたのは初めてです。

というわけで、今回は破損したwznotes.txtの復旧手順の紹介です。

まず、前知識です。ZaurusにはNAND型フラッシュが搭載してあり、それを論理的に区分けして/dev/mtdblock[1-3]としてアクセスしています。このmtdblock3が/homeとなるわけですが、ファイルシステムには組み込み向けのjffs2を使っています。このファイルシステムは少々特殊でして、ファイルを書き換える際には「上書き」ではなく「変更部分のみ追加、参照」します。どういうことかというと、

のn3に相当する部分を書き換えると、

こうなります。なお、オフセット2000を参照するノードが2つになってしまいますが、これはバージョンの新しい方が優先されます。つまり、n5が破損してもn3を参照することが出来れば、ある程度ファイルを復旧できる可能性があるということです。

ということで、上記の方針に沿ってファイルの復旧を試みました。jffs2ファイルシステムを直に読み取るのにはmtd-toolsのjffs2readerがありますので、バージョン20061007をベースに以前のノードも参照できるよう変更を加えて利用しました。以下、手順です。

  1. /dev/mtdblock3が書き換えられてしまう前にイメージファイル化する
    $ dd if=/dev/mtdblock3 of=/mnt/cf/mtdblock3.dat
  2. PC上に持ってきて、内容を確認
    $ jffs2reader -d / mtdblock3.dat
    drwxr-xr-x 1  0    500   0 Jan  1  2004 root/
    drwxr-xr-x 1  0    500   0 Jan  1  2004 samba/
    drwxr-xr-x 1  0    500   0 Jan  1  2004 sharp/
    drwx------ 1  500  500   0 Jun 24 11:27 zaurus/
    drwxr-xr-x 1  0    0     0 Jan  1  2004 userdata/
    drwxrwxrwt 1  0    0     0 Jun 24 08:59 tmp/
    drwxr-x--- 1  0    500   0 Jan  8  2004 QtPalmtop/
    drwxr-xr-x 1  0    0     0 Jan  1  2004 system/
    drwxr-sr-x 1  0    0     0 Jun 24 09:07 etc/
  3. 破損したファイルの内容を確認
    $ jffs2reader -f /path/to/wznotes.txt mtdblock3.dat > wznotes.txt
  4. 破損したファイルのノードのバージョンと対応するオフセットを表示
    $ jffs2reader -f /path/to/wznotes.txt -v mtdblock3.dat
      Inode version   Inode offset
                  1              0
                  2              0
                 19              0
                  .              .
                  .              .
                  .              .
               2637              0
               2672           4096
               2673           8192
               2676              0
               2763              0
               2764           4096
               2765           8192
               2766          11690
  5. wznotes.txtの例えば4096-11689バイトの部分が破損したとすると、該当個所の最新版の一つ前のバージョンは2672と2673なので、それを参照
    $ jffs2reader -f /path/to/wznotes.txt -V 2672,2763 mtdblock3.dat > wznotes.txt
  6. 復旧したファイルの内容を確認

これで、運がよければ復旧できるはずです。ちなみに、私は無事元通りにすることができました。本当にやれやれです。jffs2readerの実行ファイルはこちら。

Windows上でご利用の際は、作業フォルダを実行ファイルと同じにしてご利用ください。なにかご質問等ありましたらお気軽にどうぞ。