2008年03月13日

D01NXを"3桁"ザウルスで動かす(ソースコード公開!? )

約束の3月上旬をちょっとだけ過ぎましたが、無事ソースコードが公開されました。(izumimaruさん、情報ありがとうございます!)

データ通信カード D01NX ユーティリティソフトのダウンロード | イー・モバイル
http://emobile.jp/products/nx/d01nx/utilty.html

…されたんですが、公開されたのはcdc_acmドライバとダイアルアップに使っていると思われるファイルの2種類。肝心のVMBドライバが含まれていません。VMBドライバは完全新規で書いたからGPU適用外?ちょっとそれは考えにくいのではないかと思うのですが…。

ところで、ザウルス用のドライバっていつの間にVer.1.01バージョンアップしたんでしょ?私の環境では最初のバージョンでも安定して動いてるんですけどねぇ。マニュアルは変更されていないみたいなのでドライバの変更点が分からない…。

う〜ん、ちょっと問い合わせてみます。


−追記−

すいません、ちゃんとニュースリリース読んでませんでした。
http://emobile.jp/topics/info20080313_01.html
また、ソースコード公開にともない、ドライバファイルのライセンス情報を更新したため、最新バージョンのドライバも本日より公開したします。

modinfoで表示されるライセンスを変えただけみたいです。

と言うか、ライセンスの変更ってあり得るんですかねぇ。GPLはどこまで行ってもGPLのままだと思うんですが。わざわざGPLに関する説明のリンクまで貼り付けてあるわりには、VMBドライバがGPLではないって説明があるわけでもないし。どうしても公開したくない理由(例えば別のライセンスに抵触するようなコードを使っているとか)があって無理矢理ライセンス表記を変えたようにしか見えない。

正直、かなり萎えました…。orz
問い合わせももういいや。きっと問い合わせ殺到だろうし。
しばし静観モードに入ります。
posted by 月水和尚 (とも) at 18:15 | Comment(6) | TrackBack(0) | りなざう

2008年02月26日

D01NXを"3桁"ザウルスで動かす(ソースコードは3月上旬公開っ!)

イーモバイルから問い合わせに対する返事が来ました。
お問い合わせいただいておりましたD01NXのZaurus向けドライバの
ソースコードにつきましては、3月上旬を目処に公開の予定でございます。
恐れ入りますが、今しばらくお待ちくださいますようお願いいたします。

だそうです。
ちゃんと公開してくれるんですね。これは嬉しい。

3桁へのポーティングがうまく行くかは未知数ですが、とりあえず公開を心待ちにしたいと思います。
posted by 月水和尚 (とも) at 14:29 | Comment(3) | TrackBack(0) | りなざう

2008年02月12日

D01NXを"3桁"ザウルスで動かす(ソースコードを入手したいっ!)

とりあえずusbcoreさえあれば!的な考えで色々試してみましたが、今のところは全滅。やっぱりドライバのソースコードが欲しいなーと思う今日この頃。

で、ドライバが公開されるなり『ソースくれ』と問い合わせをしてくれていた渉外担当kenyaさん@試作のところには返事が返ってきたようです。

D01NX driver for Zaurus ソースコード公開してもらえるのか? ― Proto_Type001
http://comomo.shacknet.nu/blog/165

…何つーか、もうとりつく島もないって感じですね。

ただ、これはサポセンの人がGPLとかその辺のことを分かってないが故の返事だと思ってます。上記の記事でkenyaさんが検証した結果や他の方からの意見なども総合すると、今回公開されたドライバたちは間違いなくGPL(もしくはLGPL)のはずなので、ライセンス規約上ソースコードの公開要求をする権利はあるはず!

GPLのライセンスに基づいてソースコードの公開をお願いします!』と言うことをきちんと説明すればサポセンの人からもう少し上の人にエスカレーションされないかな、とちょっとだけ期待しています。私もまずはサポート窓口にソースコード公開要求をしておくとしましょう。

ソースコードが入手できたとするとドライバを3桁機(kernel2.4.18)に対応させるのはそんなに大変なことではないような気がするのですが、他に必要なカーネルモジュールとかUSB関連のアプリケーションが何なのか調べとく必要もありそうですね。カーネルモジュールだけならmake menuconfigだけの世界なので私も何とか手が出そうですが、周辺のアプリケーションまで行くと正直しんどいです。どなたか良い情報があれば是非ともお寄せ下さい。

…つーかまずはその前に、3桁機用のビルド環境を準備しなければ。(汗)

本当は3桁用の公式ドライバが出てくれれば話は一番簡単!
みんなで『3桁用も出して!』と要望を出しまくりましょう!(笑)


−追記:2008/02/15−
誤解を招く文章があったので一部修正しました。
『イーモバイル(NetIndex)はGPL違反だ!』と言いたかったわけではないんです。
お詫びして訂正いたします…。
posted by 月水和尚 (とも) at 07:25 | Comment(7) | TrackBack(0) | りなざう

2008年02月07日

D01NXを"3桁"ザウルスで動かす(手抜きで撃沈)

まさかのまさか、突然のドライバ公開に驚かされたD01NXですが、残念ながら4桁(C1000/3000/3100/3200)専用。ただ、これって単にusbcoreモジュールがないだけでは?と思う私。(3桁にはUSBホスト機能がないのでモジュール自体必要ない)

とりあえずC1000でチェックしてみると、
/lib/modules/2.4.20/kernel/drivers/usb/usbcore.o

というファイルがあること、そしてlsmodしてみると、
usbcore 63264 0 [acm vmb_usb]

と表示されることを確認。どうやらD01NXのドライバに含まれていたacmvmb_usbusbcoreがあれば動きそうな感じです。

では3桁用のusbcoreをビルド…と行きたいところですが、残念ながら私はSharpROMの開発環境を持ち合わせていません。とりあえず手抜きしてC1000からモジュールを持って行ってみました。

結果は…惨敗。modprobeusbcoreを読み込ませようとしたらバージョンチェックに引っかかってダメでした。どうやらちゃんと3桁用(kernel2.4.18)にビルドしてあげないとダメそうですね。

さくっとビルドしてくれる神の降臨をお待ちしております。(笑)

−追記:2008/02/08−

vmb_usbmodprobeしてみたらバージョンチェックで弾かれてしまいました。NXドライバの方もソースを手に入れて3桁用にきちんとビルドし直してあげないとダメみたいです。ちょっと敷居高くなっちゃいましたね…。
posted by 月水和尚 (とも) at 23:52 | Comment(10) | TrackBack(0) | りなざう

D01NXをザウルスで動かす(公式ドライバが出たっ!)

まさか、こんな日が来るとは夢にも思いませんでしたよ。

http://emobile.jp/topics/info20080207_01.html

とりあえず速報まで!

−追記#1−

ちゃんと動きました〜!
ちなみにスペカ入りのC1000です。
速度は測っていませんが、bitWarpとは比較にならないくらいさくさくですね。
いやはや、恐れ入りました。

1つ注意点は、ドライバを入れた後に再起動が必要なこと。
これに気付かずに『CFが認識しない!』とおろおろしてしまいました。
あと再起動の時に刺しっぱなしにしておいても駄目でした。
ドライバ入れて再起動するまではカードは抜いておきましょう。

あとマニュアル読むと、通信中に電源OFFるなと書いてありますね。
bitWarpの時はけっこう通信中でも構わずOFFってたんですが、NXは駄目かも。
ま、そのくらいの制限だったら全然無問題ですけどね。

中身を見てみると使っているドライバは、

・vmb_usb
・acm


の2つ。VMBドライバは1つに纏まっちゃってるんですね。
渉外担当kenyaさん@試作がさっそくイーモバに「ソースくれ」って問い合わせているそうです。
さすが。(笑)

ドライバはGPLのはずなので多分提供してもらえるでしょう。
中身確認して、Kernel2.6環境でもばっちり動くようにしたいものです。
posted by 月水和尚 (とも) at 15:37 | Comment(15) | TrackBack(1) | りなざう

2008年01月21日

D01NXをザウルスで動かす(airprimeに挑戦)

コンパイル環境が手に入ったので、調子に乗ってairprimeもビルドしてみました。
usbserialにバッファ拡張パッチを当てるくらいならこいつを使いなよ、と言うようなものらしいです。

Re: [PATCH RFC] maxSize option for usb-serial to increase max endpoint buffer size
http://linux.derkeiler.com/Mailing-Lists/Kernel/2006-05/msg08611.html

まぁよく分からんのですが、とりあえずProductIDVendorIDだけ書いてビルド。
で、AngstromC750に導入してみます。

D01NXを刺してみると、無事ドライバが読み込まれました。
そしたら何と、ttyUSBが9つも出来ましたよ。(驚)
手当たり次第cuしてみたら、ttyUSB1Connected.が出ました。

しかしそこで凝固…。(涙)
どうやらairprimeはハズレのようです。

う〜ん、次の手はどうしよう?
posted by 月水和尚 (とも) at 22:32 | Comment(0) | TrackBack(0) | りなざう

D01NXをザウルスで動かす(usbserial+optionの組み合わせに挑戦)

前回挫折したクロスコンパイル。
何とかいい方法はないものか…と思っていたら、すばらしい記事に出会いました。

Android Zaurus: Building device driver for Angstrom
http://androidzaurus.seesaa.net/article/79091419.html

そのものずばり『Angstromでドライバをビルドする方法』です。
もう今の私のために書かれたとしか思えません。(笑)

で、早速試してみます。
手順は上記のサイトで完璧なのですが、覚え書きとしてここにも書いておきます。

まず、CodeSourceryのツールチェーンをダウンロードします。

Download GNU Toolchain
http://www.codesourcery.com/gnu_toolchains/arm/download.html

Target Platform:ARM GNU/Linux
Host Platform:IA32 GNU/Linux


を選択してください。Sourceは選択不要です。
ダウンロードが完了したら適当な場所に展開します。
上記のサイトの例に倣って /opt の配下にしましょう。
ついでに分かりやすいシンボリックリンクも張っておきます。
cd /opt
tar jxvf /tmp/arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
ln -s arm-2007q3 arm-cc

これでコンパイラの準備は完了です。
続いてカーネルソースの準備をします。
使用するのは、何とAndroid用のカーネルソースです。

Zaurusに、Angstromに、Android…。

何だかすごい世界になってきてしまいました。
とうに理解の限界は超えていますが、とりあえず手順に従ってダウンロードします。
cd /tmp
wget http://android.googlecode.com/files/linux-2.6.23-android-m3-rc20.tar.gz
tar zxvf linux-2.6.23-android-m3-rc20.tar.gz
mv kernel linux-2.6.23-android-m3-rc20

これでソースの準備も出来ました。
コンパイルする前に、環境変数の設定をします。
export PATH=/opt/arm-cc/bin:$PATH
export CC=arm-none-linux-gnueabi-gcc

あとはいつものようにmake menuconfigです。
クロスコンパイル用のオプションが付くのでお気をつけを。
CROSS_COMPILE=arm-none-linux-gnueabi- make menuconfig

今回作りたいのは、usbserialoptionのモジュールだけです。余計なコンパイルをしないで済むように、良きに計らってください。あ、くれぐれも"Enable loadable module support"をONにするのをお忘れなく。(笑)
良きに計らえたら、モジュールを作成します。
CROSS_COMPILE=arm-none-linux-gnueabi- make modules

うまくいけばusbserial.kooption.koが作成されるはずです。
ちゃんとARM用のバイナリになっているか確認してみましょう。
$ file usbserial.ko
usbserial.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped

どうやら大丈夫のようです。
あとはこの2つのファイルをザウルスにコピーし、cdc-acmを削除したらdepmodします。
ipkg remove kernel-module-cdc-acm
depmod -a

で、いよいよD01NXを刺します。
dmesgを見ると無事認識。モジュールとしてusbserialoptionがロードされ、/dev/ttyUSB0〜2が作成されました。モデムとして使うのはttyUSB1なので、パーミッションを変更します。
chmod 666 /dev/ttyUSB1

あとは /etc/ppp/peers/emobile のデバイス名を書き換えたら、ダイアルアップします。
pon emobile

無事ダイアルアップ成功!
早速wgetでダウンロード試験をしてみると…。

ダウンロードが途中で止まってしまいました。(涙)

URBBUFLENもいろいろ調整してみましたが、約5MBのファイルをダウンロードしきることは出来ませんでした。試したのは以下の4ケースです。

<デフォルト>
#define N_IN_URB 4
#define IN_BUFLEN 4096

<URBを減らす>
#define N_IN_URB 2
#define IN_BUFLEN 4096

<バッファを減らす>
#define N_IN_URB 4
#define IN_BUFLEN 1024

<URBもバッファも減らす>
#define N_IN_URB 2
#define IN_BUFLEN 1024

どの場合もダウンロード開始直後に -stalled- と表示されてしまい、ダウンロードが停止してしまいました。(多分ほんのちょっとはダウンロードできているはず)

ついでに上りの改善もやってみました。これは実績のある、

<上り用のUSBを増やす>
#define N_OUT_URB 4

というパターン。この場合5MBの3割くらいまで順調にダウンロードが進みます。そしてコンソールにどばっとエラーが出て、やはり -stalled-

無改造or下りを改造すると、ダウンロードがほとんどされない代わりにコンソールにもエラーが出ない、上りを改造するとダウンロードはそこそこ進む代わりにあとでコンソールにエラーを吐いて撃沈します。いずれにせよcdc-acmと違ってまともに使える状態にはなりませんでした。

ちなみにコンパイラまたはソースの問題も疑ってみようとcdc-acmもクロスコンパイルしてみたのですが、こちらは何の問題もなく使えました。なのでドライバをビルドする環境としては問題ないようです。

さて、期待のusbserial+optionが駄目となると、次はどうしましょうかねぇ。
前にMLで話題に出てきたairprimeにでも挑戦してみますか…。

安藤恐竜さん、ありがとうございました。
ZaurusAndroid化も機会があったら挑戦してみます!
posted by 月水和尚 (とも) at 13:42 | Comment(6) | TrackBack(0) | りなざう

2008年01月13日

D01NXをザウルスで動かす(ついにザウルスで動いた!)

今回はいつものお断りは必要ありません。
正真正銘、ザウルスの上で動きました!!

ただし色々と注釈付きではありますが…。
詳細は追って説明しますが、最初に重要な点を。

・標準状態のザウルス(所謂SharpROM)で動くわけではありません
・通信速度はまだPHSよりちょっと速い程度です


ここまで読んで期待はずれだった方、ごめんなさい。
まだまだ頑張り中ですのでもう少しお待ち下さい。



『それでも気になる』と思う方は続きをどうぞ。
posted by 月水和尚 (とも) at 01:53 | Comment(19) | TrackBack(1) | りなざう

2008年01月09日

D01NXをザウルスで動かす(上りも来ましたよ!)

ついに上りで359Kbps達成!
# 例によって"ザウルスで"ではなく"PCで"です。念のため。

その時の設定は、
#define N_IN_URB 8
#define N_OUT_URB 8
#define IN_BUFLEN 4096
#define OUT_BUFLEN 128

です。どうやらBUFLENは速度には関係ないっぽいです。
(URB固定でBUFLENの値を色々変えてみましたが、特に速度は変化しなかったので)

ちなみに下りは1.2Mbps程度だったのですが、これは回線が混んでるとか外的要因だと思うのですがどうでしょう?(同じURB/BUFLENの設定で昨日は2Mbps越えを達成しているので…でも1時間くらい前にWindowsで測ったときには2Mbpsを超えていたような)

これで解決!と言いたいところなのですが、この設定をしてしまうと、ダイアルアップ接続の切断時にOSがハングしてします。運良く"Disconnect"ボタンを押せた場合でも接続は切断されず。そしてrmmod optionpccardctl ejectを実行すると該当コマンドがCPUを食い尽くしてしまいます。おしい。

とりあえず上下とも速度を出し切れることは確認できました。
あとは切断時にハングしてしまう原因が見つけられるといいのですが。

URBと上り速度とOSハングの関係はこんな感じです。

N_OUT_URB=1
 上り速度4Kbps
 OSハングなし

N_OUT_URB=4
 上り速度60Kbps
 切断ボタンは押せるが実際の切断はされない
 rmmodpccardctl ejectでCPU振り切り

N_OUT_URB=8
 上り359Kbps
 切断ボタンを押した瞬間にOSハング

ちょっと私には荷の重い宿題です…。
助け船、求む。
posted by 月水和尚 (とも) at 23:31 | Comment(7) | TrackBack(0) | りなざう

D01NXをザウルスで動かす(上り若干改善!)

ついに上りで60kbps出ました!
使っているのはusbserialoptionの組み合わせ。

いじくり回し過ぎちゃって、変更したのはどこだったか、何が決定打なのか分からなくなってしまったのですが、とりあえず思い出した事を書いてみます。(過去の記事で触れたところについてはここでは書いていません)

usb-serial.cにて、
buffer_size = le16_to_cpu(endpoint->wMaxPacketSize);

の処理があと3ヶ所あったので、全て
buffer_size = (endpoint->wMaxPacketSize > maxSize)?endpoint->wMaxPacketSize:maxSize;

に変更。(2行に表示されているかもしれませんが実際には1行です)

option.cにて、
#define N_IN_URB 4
#define N_OUT_URB 1
#define IN_BUFLEN 4096
#define OUT_BUFLEN 128

という部分を、
#define N_IN_URB 4
#define N_OUT_URB 4
#define IN_BUFLEN 4096
#define OUT_BUFLEN 4096

と変更。

この時間帯(0:30)に3回測定して、下りは2Mbps前後、上りも毎回60kbps出ていました。いい感じです。とは言えWindows環境で測定してみたら上り200kbpsオーバーだったので、Linuxでもまだまだ速くなって欲しいところではありますが。

ただ無茶な変更をしたせいか、回線の切断でOSごとハングするようになってしまいました。またN_OUT_URBを"1"に設定した場合(この場合上りは8kbps程度しか出ない)、切断するとpppのセッションは切れるもののカードのMODEランプは付いたまま。そのままrmmodpccardctl ejectをするとやっぱりOSごとハングしてしまいます。う〜ん…。

上記のoption.cに設定している値とusbserialのロード時に指定しているmaxSizeの値を煮詰めれば何とかなるんでしょうか…。少し光が見えてきましたが、まだまだ道は険しいです。

今宵は、ここまでにいたしとうございます。


# WindowsではJREが数クリック/数分で導入できてちょっと感動(笑)
posted by 月水和尚 (とも) at 01:05 | Comment(5) | TrackBack(0) | りなざう

2008年01月08日

D01NXをザウルスで動かす(ドライバ1.10リリース)

Elan社の公式ドライバが1.10にバージョンアップしました!

相変わらずダウンロードページには掲載されませんが、開発担当であるTonyさんから『GPLだからいいよ』と公開の許可をいただいたので、とりあえずこちらに置いておきます。

v1.10 (最新版) → vmb-driver-1.10.tar.gz
v1.9 (1つ前の) → vmb-driver-1.9.tar.gz

せっかくSourceForgeに場所を借りているので、近いうちにソースコードの管理はそちらに移したいと思います。(svnとかcvsの使い方をよく知らないんです…困ったもんだ)

いつも渉外役を務めてくれているkenyaくん@試作に感謝!

# その試作ですが、現在ハードウェア障害でダウンしてます
# 復旧までしばらくお待ち下さい…
posted by 月水和尚 (とも) at 14:19 | Comment(6) | TrackBack(0) | りなざう

2008年01月05日

D01NXをザウルスで動かす(PCではほぼ実用レベルに!)

いつものとおり最初にお断りしておきます。

『ここでの実行結果は"ザウルスで"ではなく"PCで"です』

とりあえず記事タイトルを変えるべきでしょうか…。(汗)

で、本題。
PCのLinux上ではだいぶ動くようになってきたD01NXですが、今一番の問題は1秒ごとに膨大なデバッグログが出てしまうこと。ログがでかくなりすぎる事もさることながら、ログ出力の処理が通信速度の足を引っ張っている様子。こいつを強引に止めてみようと思います。

やり方は至って原始的。各ソースにて、

1.printkPRINTKに置換
2.#define PRINTK do{} while(0) を上の方に追加
3.MakefileEXTRA_CFLAGS から -Werror を削除

いじょ。(笑)
あ、実際にはDEBUGASSERT関連のマクロはみんな do{} while(0) に置き換えちゃってますが。

これが効果覿面で、ログには何も出なくなり、通信速度も2Mbpsを超えるようになりました。ほぼWindowsで使ったときと同じ値です。通信速度が不安定になったりすることもないので、ばっちり実用に耐えそうです。

というわけで、

・VMBドライバ v1.9 (超強引ログ除去対応)
・cdc-acm (kenya@試作パッチ対応)


というドライバの組み合わせでどうやらうまくいきそうです。

masamuraさんの情報によるとcdc-acmではなくoptionでも動く(cdc-acmと違ってパッチ適用の必要なし!)そうなのですが、私の環境ではうまくいきませんでした。ATコマンドは受け入れているようなのですが、初期化に失敗してるっぽくダイアルアップまでたどり着きません。環境の差ですかね…。

さぁ、ぼちぼち本気でザウルスで動かすことを考えねば!
今のところ考えているのはkernel2.6採用の代替ROMで動かすことです。
SharpROMへのポーティングは私のスキルでは無理なので、神の降臨をお待ちしております。
posted by 月水和尚 (とも) at 01:32 | Comment(16) | TrackBack(0) | りなざう

2008年01月03日

D01NXをザウルスで動かす(だいぶ動いたっ!)

まずは誤解を招かないように大切な一言を。

『動いたのは"ザウルスで"ではなく"PCで"です』

で、詳細はこちらっ!(笑)
(だって今回何も貢献してないんですもの…)

D01NXをLinuxで動かす(むりやり速度改善?) ― Proto_Type001
http://comomo.shacknet.nu/blog/159

私の環境でもやってみましたが、見事に使えました。
gooのスピードテストでは 0.66Mbps の表示。
Windows環境の1/3くらいの速度ですが、普通に使うには十分ではないかと思います。
(ライバルW05Kには勝てそうな気がする!)

あとはどうやってザウルスで動かすか…。
Elan社のドライバはkernel2.6.19以上が要求されるので、kernel2.4.18(3桁機)またはkernel2.4.20(4桁機)を使っているザウルスではそのまま動かないはずです。cdc-acmは確かkernel2.4系でも大丈夫のはずですが。

考えられる方法は2つ。

・VMBドライバを頑張ってkernel2.4にポーティングする
・ザウルスでkernel2.6.19以上のカーネルを動かす


1つめは私のスキルでは無理なので神の降臨待ち…。
(某巨大掲示板で準備中な方を見かけたのでちょっと期待しています!)

2つめはpdaXromAngstromを使えば何とかなりそうです。もちろん、独自に何か別の物を使ってもOK。(実はその"別の物"の派生として今回のD01NXをザウルスで動かそう話が出ていたりします。kenyaさん@試作と色々目論んでおりますが、まだ人にお見せできる段階ではないのでこちらは今後こうご期待と言うことで…)

何だかちょっと先が見えてきましたよ。
ぼちぼちと頑張っていきまっしょい!

# 激しく出力されまくるログも何とかしたいものです…
posted by 月水和尚 (とも) at 02:38 | Comment(10) | TrackBack(0) | りなざう

2007年12月28日

D01NXをザウルスで動かす(ちょっとだけ動いたっ!)

kenyaさん@試作から朗報が!
VMB Driver v1.9D01NXちょっとだけ動いたそうです。

D01NXをLinuxで動かす(とりあえずppp接続成功) ― Proto_Type001
http://comomo.shacknet.nu/blog/158

で、このちょっとだけと言うのがミソでして…。

詳細はリンク先を読んでいただくとして、誤解を招きそうなので先に重要な点だけまとめておくと(ここ重要なのでしっかり読んでくださいね!)、

・動いたのは"ザウルスで"ではなく"PCで"です
・全然速度出てないです(瞬間最大風速5KBpsくらい)
・カーネル2.6が前提なのでSharpROMへのポーティングは難しそう

と、ネガティブな要素ばかり…。(苦笑)

私の環境でも試してみましたが、今まで全然ダメだったcuで接続してのATコマンドの実行や、pccardctlコマンドを使ったカードの取り外しがばっちり動くようになっていました。ダイアルアップはやり方がよく分からなくて試せず…。(何やってんだ>俺)

各所でけちょんけちょんに貶され、W05Kへの乗り換えも多発しているD01NXですが、個人的にはまだまだ楽しめそうです。特に急ぐ理由もないので、来年もぼちぼちとやっていこうと思います。


# そう言えば前の記事で
# 『モデムドライバはoptionに違いない!』
# と高らかに宣言していましたが、正解はcdc-acmでしたね…ははは。
posted by 月水和尚 (とも) at 22:07 | Comment(2) | TrackBack(0) | りなざう

2007年12月17日

D01NXをザウルスで動かす(新たなる希望)

ぼちぼちやってはいるものの、ほとんど進展のない状況が続いています。
最近教えてもらったり分かったりしたことをあれこれ並べてみます。

まずはasukaさん@Eternal Sleepからの情報。
D01NXのVMB5000(USB Host)機能は、M2501のWinXP Driverで動作する。
D01NXのUSB Modem (3G modem)機能は、M2501のWinXP Driverでは動作しない。
D01NXのUSB Modem (3G modem)機能は、D01HWのWinXP Driverで動作する。

とりあえず、M2501とD01HWのちゃんぽんdriverで、WinXP上で通信出来る事までは確認したというか、今現在、その環境でアクセスしている。

M2501のUSB Host部分のLinux driverとD01HWのUSB 3G Modem部分のLinux driverを組み合わせれば、D01NXをLinuxで動作させる事ができそうだという事。

続いてkenyaさん@試作からの情報。
ELANのドライバのうち、VmbIfaceというドライバはELAN社提供のそのままですよ。
M2501のものも確認しましたがやはり同じでした。
ついでに言うと、D01HWのモデムドライバはinfファイルの署名まで含めてHuwei社でしたね。

あと、いろいろ調べて分かった事。
・M2501はVMBドライバで公式サポートされている
・Huawei E220はoptionドライバを使ってLinuxで使用する事が出来る
・D01HWとHuawei E220はドライバ的には互換性がありそう
・cdc-acmよりもoptionの方が行けるっぽい(勘ですが)

で、自分なりに導き出された結論。

 VMBドライバ+optionで動かないはずがないっ!!

でも動かないんですよ…。(涙)

もう正直手詰まり。諦めモード。絶望に打ちのめされながら、残った気力でギブアップ記事でも書くか…と思っていたら、突然新しい光が!

きっかけはVMBドライバのダウンロードページからLinuxのドライバが消えていた事。いち早くそれに気付いた海外渉外担当(笑)のkenyaさんがELANの担当者にメールで確認してくれました。すると、
Hi,

the latest VMB5000 Linux Driver is "vmb-driver-1.9.tar.gz"

I am not sure about our web-site. I will investigate

何と!既にバージョンが0.5も上がっていたとは!!
(ずっとテストしていたバージョンは1.4でした)

そして知らないうちにFullDataSheetもダウンロード可能になっていました。今まで『NDA Required』だった部分が全部埋められています。(読んだところで私にはちんぷんかんぷんなのですが…)

絶望から一転、A New Hopeです。
Ver1.9のドライバが公開され次第、Episode IVのスタートです!
posted by 月水和尚 (とも) at 15:20 | Comment(2) | TrackBack(0) | りなざう

2007年11月29日

D01NXをザウルスで動かす(頑張り中)

D01NXをザウルスで動かすためにがんばる人を募集したら、何人かの方が手を挙げてくださいました。ありがたいことです。
コメント欄で色々と検証を進めているのですが、この辺で一度まとめを。

・どうやらVMB5000のドライバはちゃんと動いてるっぽい
 (取り外しはできませんが)
・モデム部分はD01HW(Huawei E220)と互換性があるっぽい
・モデムのドライバはcdc_acmではなくoptionかも


「ぽい」とか「かも」とかばかりですみません…。

で、optionを使ってみました。
カーネルコンフィグ的にはこちら。
Symbol: USB_SERIAL_OPTION [=n]
Prompt: USB driver for GSM and CDMA modems
 Defined at drivers/usb/serial/Kconfig:529
 Depends on: HAS_IOMEM && USB!=n && USB_SERIAL
 Location:
  -> Device Drivers
   -> USB support
    -> USB Serial Converter support
     -> USB Serial Converter support (USB_SERIAL [=m]

この状態でカードを刺してみたところ、optionはロードされません。modprobeで明示的にロードしてもモデムは認識せず。そこでoption.cにモデムの定義を追加します。VENDOR_ID11F6PRODUCT_ID1003です(PRODUCT_IDはHUAWEIのE220と同じでした!)。diff取ったらこんな感じです。
110a111,113
> #define NETINDEX_VENDOR_ID 0x11F6
> #define NETINDEX_PRODUCT_D01NX 0x1003
>
160a164
> { USB_DEVICE(NETINDEX_VENDOR_ID, NETINDEX_PRODUCT_D01NX) },
このモジュールを配置した状態でカードを刺してみると、ちゃんとモデムが認識され、optionがロードされました。

しかしcuで接続するとcuがハングしてしまうのは変わらず…。
Connected.までは行くんですが、これってcdc_acmの時もそうでしたっけ?

ただ、動作は少しだけ変わりました。cdc_acmを使っていた時はカードを刺すなり膨大なデバッグログが出始めたのですが、optionの場合はカードを刺しただけではモデムの認識までしか行かず、cuで接続するとデバッグログが出始めます。この動きの差に何かポイントが隠れているのいいのですが。

あと、デバッグログの出方も少し変わりました。最初数秒分のログが増えたというか。『PCカードの挿入→cuコマンドの発行→cuコマンドのkillpccardctl eject(コマンドはハングしますがデバッグログは止まってくれます)』という操作で出力されたログをこちらに置いておきます。興味のある方は見てみてください。

lsusb -vvvの結果もこちらに置いておきます。何か得るものがあればいいのですが。

検証した環境は以下のとおりです。

・InterLink MP-XP3210 (Celeron 650MHz / 386MB)
・Gentoo Linux 2006.1
・gentoo-sources 2.6.22-r9
・linux-headers 2.6.22-r2
・gcc 4.1.1-r3
・glibc 2.5
・pcmciautils 014-r1
・usbutils 0.72-r4


それと、開発用にSourceForgeに場所を借りてきました。
(まだ使いこなせていないのですが…)
https://sourceforge.jp/projects/d01nx4lz/

興味のある方はご参加いただけると嬉しいです。

あとは重要なリンクなど。

ドライバのダウンロード先
http://www.elandigitalsystems.com/eng/drivers/vmb5000/

kernel2.6.22のソース
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.22.y.git;a=tree

VMB5000 Technical Information and Advice
http://www.elandigitalsystems.com/asic/support/vmb5000.php

データーシート
http://www.elandigitalsystems.com/eng/datasheets/vmb5000/vmb5000_simplified.pdf

HSDPAカードの比較調査 (Eternal sleep)
http://www.asuka.cx/blog/2007/11/hsdpa.html

Linux PCMCIA プログラマの手引き
http://www.linux.or.jp/JF/JFdocs/PCMCIA-PROG.html

Linux PCMCIA HOWTO
http://www.linux.or.jp/JF/JFdocs/PCMCIA-HOWTO.html

SL811 -osdev-j(MMA)
http://wiki.osdev.info/?SL811

さるがとんだら Zaurusで京ポンを使う
http://co2.s16.xrea.com/hiki2/hiki.cgi?Kyo-PonWithZaurus

もう少し頑張ってみたいと思います。
posted by 月水和尚 (とも) at 13:26 | Comment(2) | TrackBack(0) | りなざう

2007年11月13日

D01NXをザウルスで動かす(ためにがんばる人募集)

小さな会社のプチシステム管理者をしている私は、社外での作業用にイーモバイルのD01NXを使っています。いつでもどこでも(でも都市部限定笑)必要な作業が快適にこなせてとっても重宝しているのですが、Windowsでしか動作しないのが玉に瑕。ザウルスでも動いてくれたら、ポケットに入るシステム管理環境が手に入って便利なのにな…と思うのですが、D01NX用のPDAドライバは全く出る気配がありません。半年以上経ってもWindows Mobile版すら出ていないので、ザウルス用ともなるともう望み薄々です。

いつものどおり『ないものは作る!』と言いたいところですが、さすがに1からドライバの開発なんて無理…と半ば諦めモードに突入していると、自称『外人にクレームをつけるのが得意』なkenyaくん@試作が、何とElan社から直接ドライバをもらってきてくれました!すげ〜!

D01NXをLinuxで動かす(ためにがんばる人募集) ― Proto_Type001
http://comomo.shacknet.nu/blog/154

と言うわけで、びっくりするようなところから手に入ったD01NXのLinuxドライバ。こいつを頑張って動かしてみたいと思います。いきなりザウルスだと敷居が高すぎるので、まずはx86なLinuxで動くことを目指します。用意した環境はこんな感じ。

・InterLink MP-XP3210 (Celeron 650MHz / 386MB)
・Gentoo Linux 2006.1 (Kernel 2.6.22)


まずは以下のサイトからドライバをダウンロードします。
http://www.elandigitalsystems.com/eng/drivers/vmb5000/vmb5k_usb_linux.tar.gz

ドライバをダウンロードしたら、/tmpあたりに適当に展開します。普通にmake出来そうな感じだったのでやってみると、普通に怒られました。
# make
ci: RCS/Makefile,v: no lock set by root
ci: RCS/README.TXT,v: no lock set by root
ci: RCS/PROBLEMS.TXT,v: no lock set by root
make: *** [rcs] Error 1

RCSとやらでこけている様子。調べてみるとRCSはバージョン管理用のツールみたいです。う〜ん、とても開発中の香り。とりあえず今はバージョン管理など必要ないので、RCSディレクトリの中身を消してしまいましょう。
# for targ in `find . -name RCS`
> do
> rm -f $targ/*
> done

これでRCS問題は解消。もう一度makeしてみます。するとこんなエラーが。(抜粋&改行追加)
CC [M] /tmp/vmb-driver-1.4/vmb_hcd/vmb_hcd.o
/tmp/vmb-driver-1.4/vmb_hcd/vmb_hcd.c: In function 'print_queued_urb':
/tmp/vmb-driver-1.4/vmb_hcd/vmb_hcd.c:112: error: 'struct urb' has no member named 'bandwidth'
/tmp/vmb-driver-1.4/vmb_hcd/vmb_hcd.c:132: error: 'struct urb' has no member named 'bandwidth'
cc1: warnings being treated as errors
/tmp/vmb-driver-1.4/vmb_hcd/vmb_hcd.c: In function 'vmb_probe':
/tmp/vmb-driver-1.4/vmb_hcd/vmb_hcd.c:1491: warning: 'deprecated_irq_flag' is deprecated
(declared at include/linux/interrupt.h:66)
/tmp/vmb-driver-1.4/vmb_hcd/vmb_hcd.c:1491: warning: 'deprecated_irq_flag' is deprecated
(declared at include/linux/interrupt.h:66)

はてな?と思うが早いか、kenyaくんがさくっと調べてくれました。
ひとつめの"bandwidth"がどーたら、っていうのは、とりあえずデバッグコード
っぽいので一旦削除して逃げる。
んで、2つめのdeprecatedっていうのは、IRQまわりの定義が変わったらしく、

< retval = usb_add_hcd(hcd, irq, SA_INTERRUPT | SA_SHIRQ);
---
> retval = usb_add_hcd(hcd, irq, IRQF_DISABLED | IRQF_SHARED);

てなかんじでSA_*を新しい定義で置き換えればOK。
IRQ周りの定義は、コンパイルエラーにちゃんと出てきて、
include/linux/interrupt.hに明確に書いてあって、以下抜粋。

/*
* Migration helpers. Scheduled for removal in 1/2007
* Do not use for new code !
*/
#define SA_INTERRUPT IRQF_DISABLED
#define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM
#define SA_SHIRQ IRQF_SHARED

というわけで、置き換えればOKとすぐにわかりました。
ちなみにbandwidthのエラーは、これまたinclude/linux/usb.h内に書いてある
struct urbの中に、

int bandwidth

ていうのがあったんだけど、新しいヘッダではその定義がなくなったようです。
それだけ。
さすがはミスターLinuxです。と言うわけで、教えてくれたとおりにプログラムを変更します。
ついでにカードの情報もドライバに記述します(全然ついでじゃないですね)。このドライバは何らかの開発ハード用のドライバと思われるので、そのままだとD01NXのドライバとして動作してくれないからです。この辺の話は以前の話題に詳しいのでそちらを参照してみてください。

まずはpccardctl ident
PRODID_1="NetIndex"
PRODID_2="D01NX"
PRODID_3=""
PRODID_4=""
MANFID=c036,1003
FUNCID=254

続いてmodalias。私の環境では以下の場所に作成されていました。
/sys/devices/pci0000:00/0000:00:09.0/0.0/modalias

中身はこんな感じ。
pcmcia:mC036c1003fFEfn00pfn00paF2BA4352pb73BB32C2pc00000000pd00000000

この2つを元に、vmb_cs/vbm_cs.cの中身を以下のように修正します。
static struct pcmcia_device_id vmb_ids[] = {
PCMCIA_DEVICE_MANF_CARD(0xc036, 0x1003),
PCMCIA_DEVICE_PROD_ID12("NetIndex","D01NX",0xF2BA4352,0x73BB32C2),
PCMCIA_DEVICE_NULL,
};
改めてmakeすると、無事ドライバが作成され、私の環境では以下の場所に配置されました。
/lib/modules/2.6.22-gentoo-r9/extra/vmb_cs.ko
/lib/modules/2.6.22-gentoo-r9/extra/vmb_hcd.ko

この状態でD01NXを差し込むと、自動的にvmb_csvmb_hcdcdc_acmの3つがロードされました。/dev/ttyACM0も作成され、なんかうまく行ってそうな感じです。しかしcuで接続しようとするとcuがハングアップ。あとkenyaくんもまとめに書いているように(そしてPROBLEMS.TXTにも書いてあるように)、カードの取り出しもrmmodもうまく行きません。こうなるとドライバ自体をデバッグしていくしかないのですが、そのスキルがなくて止まってしまっているのが現在の状態です。

デバッグと言えば、このドライバは大量のデバッグコードが出力されます。しかしその止め方が分からない!ソースコード上でpc_debug=0とすればデバッグスイッチはOFFになる(とREADMEに書いてある)はずなのですが、該当箇所を修正しても効き目なし。Makefileの-DPCMCIA_DEBUGを外すとコンパイルすら通らなくなってしまうので困ったものです。まぁとりあえず動かすことが優先なので今はいいんですけど。

カードを刺してから抜くまでのデバッグメッセージをここに置いておきます。読んで理解できる方、大募集中です。個人的に気になった箇所を以下に抜粋しておきます。
cs: pcmcia_socket0: unable to apply power.

パワー足りてない?
cardmgr[4791]: unsupported card in socket 0

あんさぽーてっどかーど!!(涙)
pcmcia: request for exclusive IRQ could not be fulfilled.
pcmcia: the driver needs updating to supported shared IRQ lines.

ドライバ側でIRQ共有に対応してなくてうまく行ってない?
vmb_cs: index 0x35: Vcc 3.3, Vpp 3.3, irq 11, io 0x0100-0x0107, mem 0x60001000-0x60001fff

そうは言ってもIRQ11できちんと割り当てられているっぽい。
vmb_hcd vmb_hcd: new USB bus registered, assigned bus number 3
vmb_hcd vmb_hcd: irq 11, io mem 0x60001000
usb usb3: configuration #1 chosen from 1 choice
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 2 ports detected

USBホストコントローラとハブを認識。
usb 3-1: new full speed USB device using vmb_hcd and address 2
usb 3-1: configuration #1 chosen from 1 choice
cdc_acm 3-1:1.0: ttyACM0: USB ACM device

USBの先にあるUSB ACMデバイスを認識。
そしてこれ以降ものすごい勢いでデバッグログが出現。

pccardctl ejectを実行。
pccard: card ejected from slot 0
API:vmb_remove(d4beb090)
vmb_hcd vmb_hcd: remove, state 1
usb usb3: USB disconnect, address 1
usb 3-1: USB disconnect, address 2

USBの取り外しまでは行ってるっぽいんだけど、何でハングしちゃうんだろ?

一緒に頑張ってくれる方、募集中です。
いつかはザウスルでも(もちろんLinuxでも)D01NXを!
posted by 月水和尚 (とも) at 17:25 | Comment(59) | TrackBack(0) | りなざう

2006年10月12日

pdaXrom 1.1.0r121:USBネットワークを使えるようにする

個人的にはとっても重宝していたUSBを使ったネットワーク接続ですが、r121では使えなくなっていました。beta1の頃には導入直後から使えてたのに何故?と思い、あれこれ調べてみることに。

まずはザウルス側。母艦(Windows機)にUSBを刺してもウンともスンとも言わないところを見ると、ザウルス側で動いていなければならない何かが動いていないと推測。ファイルシステム内をうろうろしてみたら、/etc/sysconfig/usb の配下に usbd という魅力的なファイル名を発見。中身を見てみると、こいつがUSBネットワーク(またはUSBストレージ)の機能を有効化するスクリプトらしいことが判明。さっそく実行してみることに。
/etc/sysconfig/usb/usbd start

これでUSBネットワーク機能に使う pxa2xx_udcg_ether という2つのモジュールがロードされました。

この状態でUSBケーブルを母艦に刺してみると、RNDIS/Ethernet Gadget という新しいデバイスが検出されました。どうやら今まで使っていたザウルス標準のドライバではダメみたいです。

さてこの RNDIS/Ethernet Gadget とは何ぞや…とWEBをさんざん彷徨っていたら、どうやら組み込みデバイス用のAPIフレームワークらしいということが判明。そしてWindowsXPでは標準でサポートしているとのこと。

USB Remote NDIS Devices and Windows
http://www.microsoft.com/whdc/device/network/NDIS/usbrndis.mspx

ではどうやったらドライバを組み込んでくれるのかと調べたら、下記のページに行き着きました。

WindowsXpUsbNetworkHowTo - Handhelds.org MoinMoin Wiki
http://handhelds.org/moin/moin.cgi/WindowsXpUsbNetworkHowTo

このページにある linux.inf を母艦の適当な場所にダウンロードして、ザウルスのUSBケーブルを刺します。セットアップ手順の途中のドライバ格納場所を指定する画面で、先ほどファイルを保存したディレクトリを指定すれば無事認識されます。

ただこのままだと認識されたNICがDHCPを使うような設定になっているので、TCP/IPの設定を以下のように変更する必要があります。
IPアドレス:192.168.129.1
サブネットマスク:255.255.255.0

残りの項目は空白のままでOKです。

これで母艦から 192.168.129.201sshで接続すれば、無事にログインできると思います。(ファイアウォールの設定をしている方はこのIPとの通信を許可するよう設定変更をお忘れなく)

3桁系の場合、USBネットワーク機能を使えば充電とネットワーク接続が1本で出来るので非常に快適です♪4桁系でこれが実現できないのが非常に残念!

このAPIフレームワークのご本家も見つけましたので、参考まで。

Linux-USB Gadget API Framework
http://www.linux-usb.org/gadget/

ちなみに。
Xに用意されているUSBの設定を変えるプログラム(と表現して分かりますか?)はそのままではうまく動きません。Bug Trackerに修正版が置いてあるのでそちらを使用してください。

pdaXrom Bug Tracker | pdaXrom
http://www.pdaxrom.org/BugTracker#comment-179

ただこれを使っても実際の設定は全然変わらないんですよね。(というか全然違う設定ファイルが修正される) ひょっとしたらこのプログラムで設定した内容で実行されるデーモンが他にあるのかもしれないのですが、ちとよく分かっていません。まぁ自分のやりたいことは実現できているので、これ以上は突っ込まないことにします。

次はUSBストレージにも挑戦してみます。
(今のところうまくいってません…)
posted by 月水和尚 (とも) at 17:56 | Comment(8) | TrackBack(0) | りなざう

2006年10月11日

pdaXrom 1.1.0r121:Planex CF-10Tを使えるようにする

r121を導入したら、今まで使っていたCF型LANカードであるPlanexCF-10Tが使えなくなってしまいました。USBケーブルを使ったネットワーク接続もWindows側で必要なドライバが変わってしまったらしく使えません。非常に困った事態。

困ったときのkenyaさん頼み(笑)ってことで話をしてみると、どうもyasuさんも同様の現象でお困りの模様。ただkenyaさん曰く『ほぼ同じ仕様のCF-100TXは使えているので、ドライバにパッチを当てれば使えるのではないか』と非常に頼もしいお言葉。

ということで、いつものように『ないものは作る』といきましょう。

CF-10Tで使用すべきドライバは pcnet_cs らしいので、まずはこのソースを見てみることにします。ファイル名はpcnet_cs.cです。

1755〜1756行目に、CF-100TX用の記述がありました。
PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
        0xb4be14e3, 0x43ac239b, 0x0877b627),

で、いったいこれは何を定義しているのやら…と思いつつソースを上の方に辿っていくと、どうやら構造体を定義している模様。(1554行目)
static struct pcmcia_device_id pcnet_ids[] = {

ではこの pcmcia_device_id ってのはどんな構造体?と定義を捜索すると、mod_devicetable.h というヘッダファイルに定義されていることが分かりました。

201行目以降に以下のように定義されています。
struct pcmcia_device_id {
    __u16 match_flags;

    __u16 manf_id;
    __u16 card_id;

    __u8 func_id;

    /* for real multi-function devices */
    __u8 function;

    /* for pseudo multi-function devices */
    __u8 device_no;

    __u32 prod_id_hash[4]
    __attribute__((aligned(sizeof(__u32))));

    /* not matched against in kernelspace*/
#ifdef __KERNEL__
    const char * prod_id[4];
#else
    kernel_ulong_t prod_id[4]
    __attribute__((aligned(sizeof(kernel_ulong_t))));
#endif

    /* not matched against */
    kernel_ulong_t driver_info;
#ifdef __KERNEL__
    char * cisfile;
#else
    kernel_ulong_t cisfile;
#endif
};

これだけ見ても全然分からないですね。(汗)

気を取り直して pcnet_cs.c を見ると、構造体の配列に値をセットするのに単なる代入ではない方法を使っています。例えばCF-100TXであれば、
PCMCIA_DEVICE_PROD_ID123("Fast Ethernet", "CF Size PC Card", "1.0",
        0xb4be14e3, 0x43ac239b, 0x0877b627),

とこんな感じ。この PCMCIA_DEVICE_PROD_ID123 が何をする人なのか…と調べたところ、device_id.h に以下のような定義がありました。(46行目)
#define PCMCIA_DEVICE_PROD_ID123(v1, v2, v3, vh1, vh2, vh3) { \
    .match_flags = PCMCIA_DEV_ID_MATCH_PROD_ID1| \
                    PCMCIA_DEV_ID_MATCH_PROD_ID2| \
                    PCMCIA_DEV_ID_MATCH_PROD_ID3, \
    .prod_id = { (v1), (v2), (v3), NULL },\
    .prod_id_hash = { (vh1), (vh2), (vh3), 0 }, }

なるほど、引数を構造体のメンバに代入するようになってたんですね。
(こんな技初めて見たのでちょっと感動しました)

どうもこの代入式を見ると、

・プロダクトIDが3つ
・それに対応するhashが3つ


が必要らしいです。そこで pccardctl コマンドで情報を表示してみると、
# pccardctl info
PRODID_1="Ethernet"
PRODID_2="CF Size PC Card"
PRODID_3="1.0"
PRODID_4=""
MANFID=0149,c1ab
FUNCID=6

ビンゴ!ちゃんとプロダクトIDを3つ持っています。
ではそのhashは…と考えてしばし固まってしまったのですが、そこは困ったときのkenyaさん、ちゃんと答えを見つけてきてくれました。devicetable.txt というドキュメントによると、
You can determine the hash of the product ID strings by catting the file "modalias" in the sysfs directory of the PCMCIA device. It generates a string in the following form:
pcmcia:m0149cC1ABf06pfn00fn00pa725B842DpbF1EFEE84pc0877B627pd00000000

The hex value after "pa" is the hash of product ID string 1,after "pb" for string 2 and so on.

とのことです。
ではザウルスで modalias はどこにあるのかと捜索したら…ありました!
# cat /sys/devices/platform/sharp-scoop/pxa2xx-pcmcia/0.0/modalias
pcmcia:m0149cC1ABf06fn00pfn00pa00B2E941pb43AC239Bpc0877B627pd00000000

出力された結果から、

pcmcia:m0149cC1ABf06fn00pfn00pa00B2E941pb43AC239Bpc0877B627pd00000000

ということで、きちんと3つのhashが出力されています。

あとはこれを pcnet_cs.c に追加してあげるだけです。
CF-100TXに関する記述のあとに以下の記述を追加します。
PCMCIA_DEVICE_PROD_ID123("Ethernet", "CF Size PC Card", "1.0",
        0x00b2e941, 0x43ac239b, 0x0877b627),

そしたらいよいよコンパイル!

・・・こんばいる・・・・・・・・。

無理!(涙)

カーネルドライバのコンパイルなんて、私には完全にお手上げでした…。
困ったときのkenyaさんにお願いして、無事コンパイル終了。
作ったファイルはkenyaさんが公開されております。

pcnet_cs.ko.gz — Proto_Type001
http://comomo.shacknet.nu/files/pdaxrom/r121/pcnet_cs.ko.gz/view

ファイルをダウンロードしたら、既存の pcnet_cs と置き換えて、モジュールの依存関係を修正します。(ファイルは /tmp に置いたと仮定)
cd /lib/modules/2.6.16/kernel/drivers/net/pcmcia
mv pcnet_cs.ko pcnet_cs.ko.org
gunzip /tmp/pcnet_cs.ko.gz
mv /tmp/pcnet_cs.ko ./
depmod -a

これでCF-10Tを差し込めば、無事に認識してくれるはずです。

ただし、このままだとデバイスは認識してもネットワークには繋がってくれません。r121にはネットワーク関連でちょっと不具合があるので、kenyaさんが公開されている手順に従って修正してください。

pdaXrom 1.1.0r121でネットワークアダプターの設定をする — Proto_Type001
http://comomo.shacknet.nu/blog/55

ちなみにDHCPな環境であれば以下のコマンド一発でOKです。
echo "DHCP=y" > /etc/sysconfig/netconfig/eth0.conf

kenyaさん、何から何までありがとうございました!


−追記:2006/10/16−
kenyaさんのサイトがトラブルで停止してしまっているのでファイルを代理公開しておきます。 → pcnet_cs.ko.gz

あとドライバの配置先が間違っていたので訂正しました。(失礼しました)
posted by 月水和尚 (とも) at 19:27 | Comment(2) | TrackBack(0) | りなざう

pdaXrom 1.1.0r121:Xでのキーバインド変更

こちらも調べてみました。
xevが使えるので調べるのは簡単です。

で、調査した結果がこちら → キーアサイン一覧

どうやら コンソール+8 になっているようです。

ちなみにシルクスクリーンのキーコードは実測ではありません。
kenyaさん作成のr138だと何故かシルクスクリーン認識しないんですよね。

あとは以前の記事など参考に煮るなり焼くなりお好きにどうぞ。
設定ファイルは /etc/X11/kb/該当機種の開発コード/xmodmap になります。
posted by 月水和尚 (とも) at 16:30 | Comment(1) | TrackBack(0) | りなざう