2009.08.01

[Linux Zaurus]小型Bluetoothドングルを作る夢を見てみた

Linux Zaurusで常時Bluetoothが使いたいなと思い立ち、小型Bluetoothドングルを作る夢を見てみました。

Smallbluetoothdonglever15

Smallbluetoothdonglever14

用意しましたるは適当なBluetoothドングルと、ボズシ工房さんのUSBホストアタッチメント(プレーンタイプ)

Smallbluetoothdonglever16

なぜこんなに持っているかは不明ですが、もう作ってないそうで、余分に買っておいてよかった(笑)。
これを破壊してニコイチにし、破壊したBluetoothドングルはホットボンドでコーティング、USBホストアタッチメントの方は、取り付け状態で少し浮き上がってしまうので、3mmのゴムでスペーサーを作って入れました。

Smallbluetoothdonglever11

これで、Linux Zaurusの本体にピタリと寄り添う感じのBluetoothドングルができました。

Smallbluetoothdonglever12

詳しいことはProjecrt92 blogさんのAdvanced/W-ZERO3[es]用に小型Bluetoothドングルを作る夢に書いてあります。
作ってからこのエントリを発見して、USBホストアタッチメントの丈を切り詰める工程を見て、失敗したーと思った次第。
数mmの差だと思いますが、この数mmは小さくない。なぜ、このことに思い当たらなかったか。

常時Bluetoothドングルを装着状態でカバンに入れておき、使いたいときにすぐBluetoothが使える、そんな使い勝手を目指して始めたことだけに、悔しいです。
部品はたくさんあるので、気が向いたら2号機を作ってみようと思います。

Smallbluetoothdonglever13

以上夢の話でした(笑)。

2008.03.16

[Zaurus]PHSの位置情報で地図表示「ざうもに」改変版0.0.1.5

昨日のエントリ「[Zaurus]PHSの位置情報で地図表示「ざうもに」改変版0.0.1.3」の続きです。

せらくんさんのLinux Zaurus用ソフトウェア「ざうもに」をモバイルマップNaviに対応させてみました。

ここの神のおかげです。qcoptestは設定ファイルを編集することで、監視チャンネルを指定できるとは……。
マニュアルを読まなければ分からないですね。

http://pc11.2ch.net/test/read.cgi/mobile/1203511361/574

qcop QPE/Application/mobliemap 'setDocument(QString)' 'N43.04.29.000 E141.19.51.000'

つまり、PHSから現在地の位置情報を取得して、モバイルマップNavi上で地図表示できるようになりました。

ご存知の通り、モバイルマップNaviはサービスを終了しているので、ローカルに地図データをコピーしている人でないと恩恵を得ることができません。

以下ファイルをダウンロードした後に拡張子「.bin」を削り、「ソフトウェアの追加/削除」等からインストールしてください。以前のバージョンがインストールされているなら、あらかじめ削除しておいてください。

0.0.1.4は内蔵のCFをサスペンドさせてしまう不具合があったので欠番です。

「zaumon_0.0.1.5-1_arm.ipk.bin」をダウンロード

無保証です。

2008.03.11

[Zaurus]PHSの位置情報で地図表示「ざうもに」改変版0.0.1.3

昨日のエントリ「[Zaurus]PHSの位置情報で地図表示「ざうもに」改変版0.0.1.2」へのmineさんからのコメントで、地図表示がうまくできないという話があったので、修正してみました。

mineさんのログを見ると、緯度・経度が取得できても郵便番号だけ取得できないことがあるようですが、「ざうもに」のソースを見てみると、郵便番号が取得できないと位置情報取得成功と判定しないようになっていました。
これが原因のようだったので、郵便番号が取得できなくとも緯度・経度さえ取得できていれば地図表示をするようにしてみました。郵便番号を取得しても、それを使っていませんでしたし。

また、ALPSLABの地図も追加してみました。

以下ファイルをダウンロードした後に拡張子「.bin」を削り、「ソフトウェアの追加/削除」等からインストールしてください。以前のバージョンがインストールされているなら、あらかじめ削除しておいてください。

2008.3.16追記:不具合があったため、ファイルは削除しました。0.0.1.5を使ってください。

「zaumon_0.0.1.3-1_arm.ipk.bin」をダウンロード


無保証です。

2008.03.10

[Zaurus]PHSの位置情報で地図表示「ざうもに」改変版0.0.1.2

2008.3.11追記:続編エントリに新バージョン置いておきました「[Zaurus]PHSの位置情報で地図表示「ざうもに」改変版0.0.1.3

先日のエントリ「[Zaurus]「ざうもに」を微修正してみた」の続きです。

PHSから位置情報を取得して地図表示するせらくんさんのLinux Zaurus用ソフトウェア「ざうもに」0.0.1を改変したやつをバージョンアップしました。

表示する地図を以下から選択できるようにしました。

  • Yahoo!地図情報
  • goo地図
  • Mapion
  • Mapion(PDA版)
  • MapFan Web

いじってはみたものの、メンテをする気力は無いので、こういうのは外部に追い出すべきなんですけどね。
C++は全然分からない。

Google Mapsは世界測地系で、座標変換が必要になるため対応してません。
もちろん、不可能ではないんですが、以前Molodensky法をPerlからCに移植しようとして、どうしても検算が合わなかったということがあり。

Zaumoni0012_2

以下ファイルをダウンロードした後に拡張子「.bin」を削り、「ソフトウェアの追加/削除」等からインストールしてください。

2008.3.16追記:不具合があったため、ファイルは削除しました。0.0.1.5を使ってください。

「zaumon_0.0.1.2-1_arm.ipk.bin」をダウンロード

無保証です。

2008.03.09

[Zaurus]「ざうもに」を微修正してみた

2008.3.10追記:続編エントリに新バージョン置いておきました「[Zaurus]PHSの位置情報で地図表示「ざうもに」改変版0.0.1.2

PHSカードから取得できる位置情報を元にWebブラウザで現在位置の地図表示する、せらくんさんのLinux Zaurus用ソフトウェア「ざうもに」ですが、近ごろはYahoo!地図情報の仕様変更で表示できなくなっているとのこと。

ということで、Yahoo!地図情報の「スクロール地図」でなく、「標準地図」を表示するように修正したやつを作ってみました……ものの、直したのはNetFrontの方だけで、Operaの方は修正し忘れてました。

表示する地図を選択するQComboBoxを加えてみたのを作っているので、後でアップし直します。

しかし、C++での文字列処理がよく分からない。

2008.3.16追記:不具合があったため、ファイルは削除しました。0.0.1.5を使ってください。

「zaumon_0.0.1.1-1_arm.ipk.bin」をダウンロード


ダウンロード後、拡張子「.bin」を削除して、「ソフトウェア追加/削除」等からインストールしてください。

無保証です。

2007.10.12

[Zaurus]ターミナル録画再生ツールttyrec1.0.8のLinux Zaurus向けパッケージ

これからは動画! ターミナルの動画だよ! ということで、高林哲さんのお作りになられたttyrecのLinux Zaurus向けパッケージを作ってみました。
パッケージにはttyrec ttyplay ttytimeを含みます。

ターミナルの操作の模様を録画再生できるツールです。
詳しくはttyrecのサイトを見てみてください。

Linux Zaurusでも、ちょっと変になることはある(?)ものの、動いています。
かなり面白いので、試してみてください。

ダウンロード

「ttyrec_1.0.8-1_armv5tel.ipk.bin」をダウンロード

使い方

パッケージをインストール後、ターミナルを起動します。
僕はUenoさんのカスタムEmbeddedKonsole を使ってます。

ttyrecは80x24固定で使う設計なので、ターミナルのフォントサイズを変更する必要があるかもしれません。80x24より大きければ大丈夫のようです。
「lcfont large」より小さいフォントを選択する必要があります。普通は「lcfont medium」でしょう。
フォントを変更/確認したら、一度ターミナルを再起動してから以下のような感じで実行します。

$ ttyrec -e emacs rec01.tty

すると、この例で行くとemacsの起動プロセスとなりますが、この瞬間から録画が開始されてます。
普通と違うのは、Emacsが80x24の範囲で描画されていることです。
Emacsを終了すると録画も終了となります。

$ ttyrec rec02.tty

上記のように-eオプション無しで実行すると、シェルが起動します。
exitでこのシェルを抜けるまで録画が継続されます。

再生にはttyplayコマンドを使います。さきほどの操作でrec01.ttyというファイルが生成されているので、それを引数に指定すると再生が始まります。

$ ttyplay rec01.tty

ttytimeの引数に録画ファイルを指定すると、その録画時間が秒数で表示されます。

$ ttytime rec01.tty
458 rec01

ttyrecで録画したファイルを以下にアップしておきます。
Linux Zaurus上でEmacsを使っている様子です。

デモ動画

「rec01.tar.gz」をダウンロード

動画の中で使っているtwit.elは個人的に改造したやつなので、emacswikiにあるオリジナルとは違います。

……って「twit.el」をググったら密かに置いてある糞改造twit.elがトップに来てるよwwww
@がうまく動かないからペンディングしてるのにwwwwwww

注意点

ttyrec ttyplayを使った後は、一度ターミナルを終了しないとおかしくなるようです。

展望

ttyrecのデータがいろいろ流通すると面白いんですけどね。
何か録画したら教えてください。

2007.10.04

[Zaurus]Linux Zaurus上のEmacsで選択した単語を「英辞郎 on the Web」で引く

英語を読み書きする際に、「英辞郎 on the Web」の用例が欠かせない自分用に、Emacsで選択した単語を「英辞郎 on the Web」で引く糞Elispを書いてみました。

「英辞郎 on the Web」はLinux Zaurusには重いんですけどね。Operaだと少しは軽いんでしょうか。

動作に必要な「urlencode.el」

動作にはurlencode.elが必要です。

urlencode.el(今404なのでWebArchiveの直リン)

Linux Zaurus版「英辞郎 on the Webで調べる」

(when (load "urlencode" t)
  (defun my-eijiro(beg end)
	(interactive "r")
	(call-process "qcop" nil nil nil "QPE/System"
				  "execute(QString,QString)"
				  "netfront3"
				  (concat 
				   "http://eow.alc.co.jp/"
				   (urlencode (buffer-substring-no-properties beg end) 'utf-8)
				   "/UTF-8/")))
  (global-set-key "\C-ce" 'my-eijiro))

Mac OS X (CarbonEmacs)版「英辞郎 on the Webで調べる」

(when (load "urlencode" t)
  (defun my-eijiro(beg end)
    (interactive "r")
    (do-applescript (concat "
tell application \"Safari\"
if (count of document) is 0 then
make new document
end if
tell document 1
set URL to \"http://eow.alc.co.jp/"
(urlencode (buffer-substring-no-properties beg end) 'utf-8)
"/UTF-8/\"
end tell
end tell")))
  (global-set-key "\C-ce" 'my-eijiro))

使い方

英語でも日本語でもどっちでもいいので選択したら起動するだけです。
上記から変えていなければ「Ctrl+C e」で起動です。
Linux ZaurusではNetFrontで、Mac OS XではSafariで、選択した単語の「英辞郎 on the Web」の検索結果を表示します。
Safariはあえてactivateせず、SafariのウインドウをCarbonEmacsの隣に開いておく使い方を想定してます。

いっしょに使うと便利なElisp「sense-region.el」

単語を選択するのが面倒臭い。

そんな場合は、「sense-region.el」を使うと、単語のどこかにカーソルが乗ってさえいれば、Ctrlを押しながらスペースキーを二度押すだけで単語の選択が完了します。
さらにスペースを押していくと、後方に向かって単語を一つずつ選択範囲に加えていきます。
物凄く便利なのでおすすめです。

2007.10.03

[Zaurus]Ruby用ライブラリHpricotとWWW::MechanizeのLinux Zaurus向けパッケージ

電車での移動時間を使ってLinux ZaurusでWebのスクレイピングの仕込みをするべく、RubyのHTMLパーサ等を用意してみました。

はけさんのはけのザウルス備忘録別館Hpricotの0.5がありますが、0.6が出ていたのでそれを。
WWW::Mechanizeにも興味があったので、それも。

幾霜の橘さんから「-static-libgcc」というオプションを教わったので、ruby-serialportとruby-termiosをlibgcc(3.4.4)不要版としてパッケージを作り直しました。

いずれのパッケージも、FocVさん版パッケージのRubyの構成に準拠してます。FocVさんのところにある1.8.6-p110を入れた環境で幾霜さんのzgcc34でセルフコンパイルしてます(Pure RubyなWWW::Mechanizeを除く)。

ダウンロード

Hpricot 0.6
「ruby-hpricot_0.6-1_armv5tel.ipk.bin」をダウンロード

WWW::Mechanize 0.6.10
「ruby-mechanize_0.6.10-1_armv5tel.ipk.bin」をダウンロード

ruby-serialport 0.6
「ruby-serialport_0.6-2_arm.ipk.bin」をダウンロード

ruby-termios 0.9.4
「ruby-termios_0.9.4-2_arm.ipk.bin」をダウンロード

ライブラリの紹介等

Hpricotは、HTMLを解析してオブジェクトを生成します。HTMLから特定の部分を切り出したい場合等に便利。正規表現を使わず思ったものを切り出せます。

WWW::Mechanizeは、あたかもブラウザを操作するかのようにRubyからWebアクセスできます。普通はRubyからWebをいろいろいじろうとすると、HTMLの中身を仔細に調査する必要がありますが、WWW::Mechanizeを使うと、かなり見た感じでいけます。Cookieやヒストリなんかも管理してくれます。

正規表現でバリバリやるより、スクリプトのメンテナンス性が向上します。

Linux Zaurusで動かすと、ちょっと重いですが。

何の役に立つのか? サンプル

WWW::MechanizeとHpricotでmixiのあしあとを取得する例です(リニューアル後のさっき試しました)。
World Wide Walkerさんの「mecanize.rb で mixi diary を自動取得する」のパクりともいう。

mixiのような認証があるサイトの場合、普通はログインフォームからCookieをもらって、それをヘッダにセットしてログインしないと読めないページを読む、といった処理をしますが、WWW::Mechanizeがその辺りのCookie管理をやってくれているので楽ができてます。

取得したあしあとページから必要な部分を切り出すのをHpricotでやってます。
ほぼ正規表現無しでスクレイピングができちゃってます。便利。

あしあとの取得ならAPIを使うべきですが、とりあえずサンプルということで。

アクセスログマニアの方は、こういうのをCronInetで定期起動させて、Linux Zaurusでいろいろなログを監視してみては。

#! /usr/bin/env ruby

require 'hpricot'
require 'mechanize'
require 'logger'
username = 'YOUR_EMAIL_ADDRESS'
password = 'YOUR_PASSWORD'

agent = WWW::Mechanize.new {|a| a.log = Logger.new('access.log')}
page = agent.get('http://mixi.jp/')
form = page.forms[0]

form.fields.find {|f| f.name == 'email'}.value = username
form.fields.find {|f| f.name == 'password'}.value = password
form.fields.find {|f| f.name == 'next_url'}.value = '/home.pl'
page = agent.submit(form, form.buttons.first)

if /url=([^"])"/ =~ page.body
link = 'http://mixi.jp' + $1.to_s
agent.get(link)
end

doc = Hpricot(agent.get('http://mixi.jp/show_log.pl').body)
doc.search("#log_color").search("li").each do |li|
puts li.inner_text
end

徒然に

なぜか、かの伊藤栄一郎氏のサイトhttp://oohito.com/からリンクされていてビビった!

2007.09.24

[Zaurus]Lua 5.1.2のZaurus向けパッケージ

プログラミング言語Lua 5.1.2のLinux Zaurus向けパッケージを作ったので置いておきます。VMware PlayerにVine Linuxをインストールしてクロスコンパイル環境を作って、何か試したかっただけで特に意味はありません。

「lua_5.1.2-1_armv5tel.ipk.bin」をダウンロード

「readline_5.2-1_armv5tel.ipk.bin」をダウンロード

参考:解説サイト

readlineはスタティックリンクにした方がいいんでしょうね、きっと。

2007.09.18

[Windows Mobile][Zaurus]Linux Zaurus用Advanced/W-ZERO3 [es]モデムドライバー

Advanced/W-ZERO3 [es]をLinux Zaurus SL-C3200のモデムとして使いたいと思い立ち、SL-C3200のKernel Source付属のドライバー(Kernel Module)ipaq.cを、Advanced/W-ZERO3 [es]のデバイスIDを追加してコンパイルしてみました。とりあえず使えています。

インストール

下記のipkをダウンロードして、インストールするだけでOKだと思います。自分のSL-C3200ではAdvanced/W-ZERO3 [es]がモデムとして認識しています。3桁機種には使えません。
無保証です。

「zero3modem_0.1-1_armv5tel.ipk」をダウンロード(コンテクストメニュー等から保存してください)

ダウンローダ向けにURLも書いておきます。
http://moyashi.air-nifty.com/hitori/files/zero3modem_0.1-1_armv5tel.ipk


/lib/modules/2.4.2.0/kernel/drivers/usb/serial/ipaq.o
/lib/modules/2.4.2.0/kernel/drivers/usb/serial/usbserial.o

をインストールします。ほかのディレクトリにこれらが入っている場合は削除しといてください。
また、ここに同名のファイルがある場合は、問答無用で上書きすると思います。注意してください。

確認

USBケーブルで接続する前にAdvanced/W-ZERO3 [es]の「設定>接続タブ>USB接続」を表示し、「モデムとして使用する」のラジオボタンをONに。

USBホストケーブル経由でAdvanced/W-ZERO3 [es]をZaurusに接続。両方ともUSBホスト機ですが、無論Zaurus側にUSBホストケーブルを。

「設定タブ>システム情報」を実行し、「デバイス」タブを表示します。USBのツリーの下を見て、以下のように「Driver: serial」となっていればOK。

設定

Small Islandさんのエントリ「ZAURUSにW-ZERO3をモデムとして使う(2)」を見て設定してください。

「設定タブ>ネットワーク設定」でダイヤルアップ接続の「追加」を実行。「PPPダイヤルアップ接続 [赤外線]」を選択して「選択」ボタンを押す。基本的には通常通りのダイヤルアップの設定をし、「モデム」タブの初期化コマンドを「AT」にして「OK」ボタンを押して保存。

ターミナルで以下を実行。

$ su
# cd /etc/ppp/peers/
# vi `ls IRDA*`

で、viで以下のようにタイプ。

ji/dev/ttyUSB0 [Cancel]:wq

[Cancel]はキャンセルボタンを押す、(Escを押す)ってことです。
要するに2行目の「115200」を「/dev/ttyUSB0 115200」と書き換え、保存します。

ソース変更内容

ipaq.hには以下を追加

#define SHARP_VENDOR_ID 0x04dd
#define SHARP_WS003SH_ID 0x9102
#define SHARP_WS004SH_ID 0x9121
#define SHARP_WS007SH_ID 0x9123
#define SHARP_WS011SH_ID 0x91ac
#define SHARP_S01SH_ID 0x9151

ipaq.cには以下を追加

{ USB_DEVICE(SHARP_VENDOR_ID, SHARP_WS003SH_ID) },
{ USB_DEVICE(SHARP_VENDOR_ID, SHARP_WS004SH_ID) },
{ USB_DEVICE(SHARP_VENDOR_ID, SHARP_WS007SH_ID) },
{ USB_DEVICE(SHARP_VENDOR_ID, SHARP_WS011SH_ID) },
{ USB_DEVICE(SHARP_VENDOR_ID, SHARP_S01SH_ID) },

つまり、ipaq.cのデフォルトに加え、ZERO3シリーズ+EM・ONE(S01SH)しか認識しません。

より以前の記事一覧

blogparts

  • Last.fm
  • twitter

Recent Comments

無料ブログはココログ