11月 142011
 

以前に一回「USB 無線 LAN 色々、FreeBSD で試してみた。」と言うエントリを書いているのですが今回のその続編。二回目です。

今回は FreeBSD のバージョンを 9.0-RC1 にして、新たに購入した機器の動作確認をしてみました。とわいつつ、実は前回も書いているのですが、if_run と if_rum の機器を持ってくればほとんどが動作するんですけどねぇ・・。

今回試した USB 無線 LAN 機器は以下の通り。まずは写真を。

IMG_2549_RadioLan2_1.jpg

順番に見ていくとしましょう。

1. Planex GW-USNano2-G
写真の上のほうにある黒くてチッコイやつです。こいつは FreeBSD で動作しない、ドライバが書かれていない、例の Realtek RTL8192CU を使っているヤツです。またまたま買ってしまい大失敗しました・・。orz。 NetBSD だと動作するんですけどねぇ。

で、今回も ndis でトライしてみたんですが、USB 機器はどうしたら if_ndis に結びつけるのか結局解りませんでした。sys/dev/usb/usbdevs にエントリー書けば良いのかなぁ? ndis での USB 機器の使い方がいまいち解らないんですよねぇ。そんなデバイスは知らん。と言われて ugen にアタッチされてしまいます・・。orz。

2. Planex GW-US54Mini2
これはアキバの某お店で 499yen で売っていたので買ってきて試しました。 FreeBSD では if_rum で動作します。 802.11g でリンクアップするのでこれはまぁ、中々良い感じでしょうか。ただし、今はもう販売終了となっていると思いますが・・。

3. Logitec LAN-W300N/U2
これは FreeBSD では if_run で動作します。けっこう高速で利用できます。続きはちょっと下のほうで書きます。

4. BUFFALO WLI-UC-GNM
これも FreeBSD では if_run で動作します。802.11b/g/n に対応しているので 150Mbps 出る。と言われていますが、そこそこな感じでしょうか。

と、言うことで今回は四打数三安打でした。それにしても最近は ちっこい USB 無線 LAN アダプタが RealTek のだったり Ralink のだったりするので購入する場合にはちゃんと下調べしたほうが良いと思われます。

で、どうして今回、再度の検証を行なったかと言うと、以前利用していた PCI GW-US300MiniW が壊れてしまったので、手持ちであるあるやつを利用し始めたんだけどこいつらみんな遅いっ!! 例えば NFS 上にある動画を再生しようとするとブチブチコマ落ちするし止まるしで到底実用には耐えられない遅さなのであります。

じゃ。ってんで、今回二回目の買い出しに出たのであります。結論から言うは if_run でも通信速度が速いものと遅いものがあります。僕が思うに小さいのはアンテナの影響から来るのか、遅いですね。BUFFALO WLI-UC-GNM は小さくてスルっと収まるんだけど遅いのが難点。
Logitec LAN-W300N/U2 はちょっと出っ張るんだけど、こいつは速いです。WLI-UC-GNM よりも速い。あと、以前使っていて壊れてしまった GW-US300MiniW も大きくて邪魔だったんだけど速かった。

あ、体感的には if_rum よりも if_run のほうが速いですね。まぁ、これはチップとドライバの問題で、当然 if_run のほうが速いのだろうと思いますが。

と、言うわけで教訓。

・if_run を買いましょう。
・300M と書いてあるのは多分速い。けど、その分でかい。
・速さを求めるならでかいのを買いましょう。

って感じでしょうか。デバイスが認識したあとに ifconfig wlan0 の media の部分を見ると良いと思います。

さてさて。どうして僕がこんなに USB 無線 LAN アダプタに凝るのか? と言えば、ThinkPad X100e 内蔵の 無線 LAN カード Advanced-N + WiMAX 6250 が正常に動作しないので USB アダプタに走るのでありました。

が、この間別のエントリにコメントしました<が、Advanced-N + WiMAX 6250 は動作するようになりました。 ここに書かれているように if_iwn.c を改修すると動作します。

それにしてもちゃんと動作する if_iwn はむちゃくちゃ速いです。 802.11n でリンクアップします。実際に計測してみると 24,5Mbps は出ています。すげーーっ(@_o)。けど、しょっちゅう通信が切れるんですよね。リンクの up/down はしないんだけど 30 秒くらい平気で止まってしまい、利用できるんだけど実用には耐えられない。速いだけに非常にもったいない・・。orz

と、言うことで Advanced-N + WiMAX 6250 の次に速いのが GW-US300MiniW、その次が LAN-W300N/U2 です。こいつは 12,3Mbps くらい出てくれます。 WLI-UC-GNM になると if_rum の速い機器と同等程度の速度になりますかねぇ。

あくまでも僕の実測と体感からの感想です。

と、言うことで if_run が今のところは一番良い感じだと思います。利用できるのは当たり前。更に速度を求めるのであればもっと他に色々試してみたいものですねぇ;-)。

10月 242011
 

いやね。とあるタイミングで ports を csup したら KDE のバージョンが KDE-4.6.5 から KDE-4.7 系にアップデートしていたので「お。新しい KDE4 がリリースされたっ!!」とか思い portupgrade -arR しようかと思ったのだけど FreeBSD 自体も 9 系が CURRENT から RELENG_9 になったので、せっかくだから RELENG_8 から RELENG_9 にしてしまえーーっ!! ってことで、 NotePC にインストールされている FreeBSD を FreeBSD 9.0-RC1 にしてしまったのでありました。

バージョンアップしたのはデスクトップと NotePC の両方。で、今回の記事は ThinkPad X100e についてになります。

それにしてもこの NotePC、夏はてんでダメですな。温度が上がりすぎて勝手に shutdown が走ってしまう。裏を返すと正常に ACPI が動作している。とも言うんですが、Windows7 なんかは夏場の暑い時期だと起動後五分も持たずに shutdown、FreeBSD でも hw.acpi.thermal.tz0._PSV=80.0C とか設定入れて CPU クロックを落としたりするんだけど、自動 shutdown してしまう。メッセージを出力しつつ・・。orz。

熱い CPU っちゅーのはツライですなぁ・・。

と、言うことで本題の suspend/resume についてですが、以前、一回記事にしていますよね。そのとき試したのは RELENG_8 だったのだけど、今回は RELENG_9 でトライっ!! って感じ。で、見事に supend/resume してくれます。わーーいっ!!

そもそも ThinkPad X100e は無線 LAN カードに if_iwn を利用しているのですが、こいつがまた FreeBSD では動作しない・・。orz RELENG_8 では、以前は一時的に動作していたのに 2011/07/05 くらいに改修が入ってそれ以降は動作しなくなってしまった・・。RELENG_9 でも試したんだけどやっぱり動作しない。

しょーがないので僕の場合、無線 LAN は USB の if_run を利用していたのであります。が、こいつは suspend/resume の時に悪さすることが解りました。

suspend/resume するマシンの僕の環境は以下の通り

0. 僕の環境
・FreebBSD 9.0-RC 2011/10/19 10:00 頃に csup して来たものを利用
・Xorg-7.5.1 + dri-7.6.1,2 + xf86-video-ati-6.14.2
・KDE-4.7.2 しかし、なぜだか解りませんがデスクトップ効果が有効になりません・・。orz

では、実際に suspend/resume する時の手順を以下に書いてみましょう。

1. Xorg の画面を抜ける
X が起動していてその上で動作している端末上で acpiconf -s3 や KDE4 の[スリープ]を押しただけだと suspend はしますが resume してくれません。X を起動している人は Ctrl+Alt+F1 などでいったん X を抜けてコンソールの画面を表示させます。

なお、sysctl にはこれを自動でやってくれる hw.syscons.sc_no_suspend_vtswitch という MIB があるのですが、これが有効になってないんですよねぇ・・。なので手動で X を抜けます。

2. とりあえず無線 LAN の利用を停止する
僕の場合は run0 で認識している USB NIC を引っこ抜きました。その後で acpiconf-s3 とたたきました。すると suspend してくれます。その後、フタを閉じて開くと PC と言うか OS が目覚めるのでリターンキーを 2,3 発叩きます。するとコンソールが現れると思います。sync 連打して無事を確認します。おーー。 resume しましたねぇー。パチパチパチ。

ここで run0 で認識する USB NIC を接続すると無線 LAN が利用できるようになります。後は Ctrl+Alt+F2|3|4 などを押して X を表示させれば無事に X の画面が表示してくれると思います。

RELENG_8 の頃はコンソールのプロンプトが返ってきても X の再表示ができなくて drm.ko が暴走していたんだけど、 RELENG_9 ではそんなことは無いようです。それが大きな違いでしょうかね。

3. USB NIC は実はくせ者?
さてさて、上記 2. で suspend/resume が利用できるようになりました。もう一回、上記の手順で suspnd/resume すんべかと思い試してみると・・。あいや。orz resume は一回限り有効で、二回目の resume ではコンソールが凍り付きますね。

この場合は、無線 LAN の利用をきっぱりとあきらめましょう。一回目の suspend 前に X の画面を抜けた後、USB NIC を引っこ抜きます。その後で if_run を kldunload します。これがミソです。

有線 NIC を利用する場合、つまり if_re を利用している限りでは何回も suspend/resume してくれます(僕が試したのは連続四回ですが;-)。

そう考えると usb か、 if_run のどちらかに問題があるような気がしないでもないですが、今の段階ではカーネルがそれらしいログを出力してくれないのでちょっとまだ原因がわかりません。また、if_run 以外の 無線 LAN ドライバではどうなのか?もちょっと解りません。

もし if_iwn が動作したとしたら、それは多分 PCI バスに接続されているので、なんか動作しそうな感じはしないでもないんですけどねぇ。

以上は、僕が持っている ThinkPad X100e で RELENG_9 な FreeBSD を走らせたときの suspend/resume の動作になります。
けども RELENG_9 も生ものなので今日動いたものは明日は動かないかもしれない部分も多々あるので、今の環境を保持しておいたほうが良いのかなぁ?

どっちにしても FreeBSD において supend/resume したのは実に CASIO FIVA MPC-206 以来の快挙なのであります。嬉しいですなぁ;-)。わーーいっ!!

後はデスクトップ機で suspend/resume してくれるとすんげー嬉しいんですけどね;-)。

8月 082011
 

現在、自宅のサーバは 7.4-STABLE でデスクトップ PC と NotePC は 8.2-STABLE にしています。そして、IPv6 ルータとして動作しているちょっとワンパクな EeePC は 7.4-STABLE だったんだけど、これを 9.0-BETA1 にしてみました。

このブログでは過去に何回か EeePC について取り上げていたのですが、8 系 STABLE もちょっと怪しい動作だったので 7.4-STABLE にしていたのだけど、それでも動作が怪しいので今回自宅内の FreeBSD の中ではいち早く 9.0-BETA1 にしてみた。という感じです。まぁ、インストールされている ports の数が一番少ない。ってのもあるんですけどね;-)。

では早速 9.0-BETA1 をインストールした感想などを書いてみたいと思います。

0. EeePC のシステム構成
EeePC は内蔵の SSD が 4GB しかないので 60GB の外付け USB HDD を接続し、そこに FreeBSD をインストールして起動しています。

ルータなので NIC は二個利用しています。一個は内蔵 NIC の ae0 です。もう一個は USB の BUFFALO LUA2-TX LUA2-TX と言うヤツで、これは 7.4-STABLE では aue0 として認識されていました。

内蔵無線である ath0 は今回利用していません。

1. インストーラ変わったね
最初、9.0-BETA1 を CD-R に焼いて、母艦に EeePC で利用する HDD を接続して久しぶりにクリーンインストールしようかと思ったのですが、インストーラが大きく変更されていて焦りました。母艦の HDD をケーブルからはずせば良かったんだけど、接続したまま CD で起動したら母艦の HDD しか認識してくれない。
USB HDD は通常 /dev/da0 とかで認識されるんだけど、見えなかったのでシューリョー。って感じ。結局、CD-R からのクリーンインストールは諦めました。

2. csup からバージョンアップ
EeePC は 7.4-STABLE の状態で起動するのでこの状態で csup して一気に CURRENT に持って行きます。 EeePC の CPU は遅いので make buildworld+make buildkernel は大体 14 時間位かかりました。orz。

9.0-BETA1 の起動後に注意する点としてはやはり USB 回りですね。以前に書いた「FreeBSD RELENG_8 で USB 機器からブートする。」って設定が必要です。
あと、7.4-STABLE からのバージョンアップの場合、すっかりと忘れていた(8 系 では既にそうなっいる)のですが、USB コントローラもカーネルモジュールになっていたのですね。カスタマイズカーネルを利用する場合には /boot/loader.conf に uhci.ko ohci.ko ehci.ko をロードするようにしないと、USB が一切認識してくれないです。

とまぁ、こんな感じで /usr/src/Makefile の中に書いてある手順に従うとバージョンアップが終わります。

あ。一点書いておきましょう。make delete-old とか make delete-old-libs するとひたすら “y” と打たなければならずかぁなりしんどい。そんな場合は以下のコマンドを;-)。

# yes | make delete-old

 
ドドドと削除してくれます;-)。

4. ports のインストール
ports の make config のときの青い画面の動作がちょっと変わってビビリました。[X] hoge でメニューを選択したあとに TAB キーを押すと [ OK ] から [ CANCEL ] にカーソルが動いてしまう。選択したら TAB キーを押さずにそのままリターン。みたいな感じになりました。

それにしても emacs のインストール時、全てのオプションを WITHOUT_hohe=true にしたのに X をインストールしようとしてしまう。 /etc/make.conf には WITHOUT_X11=yes って書いてあるのにねぇ。なので emacs は結局 ports からインストールせずノラビルドでインストールしました。

ちなみに サーバの場合、/etc/make.conf には以下が書いてあると良いかと思われます。

WITHOUT_X11=yes
WITH_THREADS=yes

 
WITH_THREADS=yes を書くと perl とか python は -threaded でインストールされます;-)。

3. 起動後の各種設定
/etc/rc.conf のネットワーク設定がガラリと変わりました。これはじっくり見て正しい設定をしたほうが良いかと思われます。

IPv6 回りで気がついた点として ipv6_enable=”YES” が無くなり ipv6_activate_all_interfaces=”YES” になりました。

でもって ipv6_activate_all_interfaces は “YES” でない場合は ifconfig_IF_ipv6 で判断して、 “_IF_” のインターフェースにしか link local アドレスが付加されません。今までは全てのインターフェースに link local が付いていただけに「すげー。」とか、ちょっと思います;-)。
ちなみに link local が付加されないインターフェースってのは「IPv6 を利用しないインターフェース」って認識で良いと思います。

あとは、alias アドレスの設定方法が変わりましたね。 IPv4/IPv6 で同一の設定になりました。

ipv6_prefix_IF=”” の設定も驚きました。今までは最後に “::” とか付けていたのですが、これを付けるとダメみたいです。

以下、簡単な例です。

defaultrouter="192.168.1.254"
gateway_enable="NO"
ipv6_defaultrouter="NO" ipv6_gateway_enable="YES"
ifconfig_ae0="inet 192.168.1.192 netmask 255.255.255.0" ifconfig_ae0_alias0="inet 192.168.1.253 netmask 255.255.255.0"
ifconfig_ue0="DHCP"
ipv6_activate_all_interfaces="YES" #ipv6_network_interfaces="auto" #ipv6_default_interface="ae0"
ipv6_ipv4mapping="NO"
ipv6_prefix_ae0="3ffe:3e0:a71:fee1"
ifconfig_ae0_ipv6="inet6 3ffe:f3e0:fa71::1 prefixlen 64"
ifconfig_ae0_alias1="inet6 3ffe:f3e0:fa71::ffff:2 prefixlen 64" ifconfig_ae0_alias2="inet6 3ffe:f3e0:fa71::22:1 prefixlen 64"
rtadvd_enable="YES" rtadvd_interfaces="ae0"

 
あ。aue0 名前が変わりました。8 系からかな?僕は 8 系で aue0 使ったことないので解らないのて゛すが ue0 になりました。wlan0 と一緒で USB NIC は全て ue0 になるのかなぁ? USB NIC は一種類しか持ってないので良く解らないのですが。

4. はまり道
上記 IPv6 のネットワーク設定をしたのですが、一番はまったのは gif0 に link local アドレスが付加されない。ってところでしょうか。gif0 に link local が無いので IPv6 ルーテイングができずにかぁなり焦りました。

で、詳しい方に irc で教えてもらったのですが、 /etc/rc.d/auto_linklocal があるとダメらしいです。合わせて /etc/rc.d/network_ipv6 も残っていたりする。この二つの rc ファイルは 8 系までのファイルで 9 系というか、現在の CURRENT では不要なファイルになっています。

/usr/src/Makefile 内に書かれている内容でバージョンアップするのですが、そのとき 9. mergemaster ってのがあって、それを実行します。この時、以下のように聞かれます。

*** Checking /etc/rc.d for stale files
*** The following files exist in /etc/rc.d but not in /var/tmp/temproot/etc/rc.d/:
auto_linklocal network_ipv6
The presence of stale files in this directory can cause the dreaded unpredictable results, and therefore it is highly recommended that you delete them.
*** Delete them now? [n]

 
ここで「削除するのはイヤ。」とか思いとどまって “n” などと叩いてしまうと gif0 に link local アドレスが付加されることは無いのであります。上記二つのファイル (auto_linklocal と network_ipv6) は CURRENT では既に不要なファイルなので、サクッと “y” を叩いて削除してしまいましょう;-)。

あとは ipfw の設定とかまだもう少し残っていたりしますが、一応ここまでがこの週末に行なった作業なのであります。
あとはもう少し使い込んでみてから色々やってみたいと思います。 ath0 なんかも試してみたいですね。

CURRENT に慣れてきたら NotePC とかデスクトップ PC に導入したいと思います。

それにしても /etc/default/rc.conf はじっくりと眺めたほうが良いかもしれないです;-)。あ。あと man rc.conf(5) も;-)。

7月 082011
 

なんとっ!! 自宅のネットワーク環境において、無線 LAN 環境のネットワークが二つできてしまい、SSID をネットワーク毎に切り替える必要性がでてきてしまいました。

Windows なんかの場合だと比較的容易にアクセスポイントを切り替えられるのだけど、 FreeBSD の場合は CUI がメインかなぁ。なので「なんか GUI ないかなぁ?」とか思い探しまわったら ports に net-mgmt/wifimgr というのがあったので早速インストールしてみました。

まぁ、QT ベースの KDE4 を利用している僕にとって、gtk ベースのアプリっちゅーのはどうもしっくりこないんだけどもそれはそれしょーがない。 QT ベースのものを利用したい場合には net/wpa_gui ちゅーのがあります。こっちは FreeBSD でインストールされている wpa_cui の GUI 版なんだけど、wpa_supplicant のバージョンがずいぶんと古い。でもって実際に起動してみてもたともに動作しているようにみえなかったんですね。

なので、今回は net-mgmt/wifimgr を利用しました。 ports からインストールして wifimgr と叩いて起動するだけです。コンパイルも早いですしね。非常に簡単。

起動する時に /etc/rc.conf の ifconfig_ をチェックして WPA と言う文字があった場合にのみ起動します。最初、ifconfig_wlan0=”DHCP ssid test” だけしか書いてない状態で wifimgr を起動したんだけど、動作しなくて・・。で、ソースコード見たら WPA って文字をチェックしているみたいだったので ifconfig_wlan0=”DHCP ssid test WPA” とか書いたら無事に起動しました;-)。

起動後は root のパスワードを聞かれ、そのあとで管理画面が表示されます。

スクリーンキャプチャを掲載しようと思ったのですが、表示されているのが SSID とかパスフレーズだったのでちょっとやめました。実際に自分で起動して確認してみてください;-)。

起動したあとは Windows 上でよく見る Wi-Fi マネージャとほぼ一緒です。まだあまり使い込んでないのですが、使い方も直感的で解りやすいです。

新しいアクセスポイントを利用するようにした場合、その設定情報は /etc/wpa_supplicant.conf にダイレクトに書き込まれます。そのあとで「保存と再起動」ボタンを押すと wpa_supplicant が再起動されて指定したアクセスポイントに接続されるようになります。すげーぞ。

以上が動作です。さてと。ソースコードを見てみると po ファイルがあるのでこらー日本語化は簡単だな。とか思い覗いてみると、今のところは英語とフランス語にのみ対応しているようですね。

まぁ、せっかくなので ja.po を書きました;-)。

日本語に対応した ports は以下にあるので良かったら皆さん試してみて頂けませんでしょうか。

http://icmpv6.org/Prog/FreeBSD_ports/ports-wifimgr-20110708.tgz

po ファイルの追加だけなら簡単だっんですけど、 src/Makefile にも手を加える必要があったので新しい ports にしてしまいました。

po ファイルだけは別に切りだしてあって以下の URL にあります。「日本語変だよ。」とか思われた方、改修して頂ければと思います。

http://icmpv6.org/Prog/ja.po/wifimgr-20110708.po

もし、問題がなければ作者さんにメールを送って、実際に ja.po ファイルをソースコードに取り込んでもらおうかなどと思っています。

と、言うことで、wifimgr と言う、GUI インターフェースが利用できる Wi-Fi マネージャなのでありました。ところで、ソースをちろっと眺めただけなんだけど、wlan が 0,1 と複数あったらどう言う動作するんだろうなぁ・・。

10月 072010
 

ThinkPad X100e の三回目です。これで最後になるか?! と、言う感じなのですが、僕がこの X100e を購入した後に Lenovo から新製品が出たり DELL から AthonII X2 な CPU の NotePC が出たりしてちょっと悲しいことが続いている、つまりはまぁ、僕が購入したタイミングが非常に悪かった。と言うことになるのですけども・・。orz。

と、言うことで今回は X100e で FreeBSD を利用した時の Suspend と Resume についてのお話です。「ThinkPad X100e で FreeBSD。気がついた点。」のエントリーでは「サスペンド・レジューム動きません。」とキッパリと書いたのですが、色々試したら、X 無しだと Suspend して Resume することが確認できました。FreeBSD もドンドンと進んでいると言うことですねぇ・・。大変失礼しました・・。

試した方法ですが、全てのカーネルモジュールを unload します。でもって必要最小限のカーネルもシュールのみで起動します。以下はそのモジュールのリストです。

kernel
acpi_ibm.ko
random.ko
if_re.ko
miibus.ko
procfs.ko
pseudofs.ko
ipfw.ko
libalias.ko
radeon.ko
drm.ko
agp.ko

 
ファイルシステム系のモジュールはあってもなくても大丈夫でしょう。ネットワーク系モジュールはリモートから ssh する用です。後、random もですね。その他に X 系のモジュールをロードしました。
僕は ATA 系周りはモジュールにしていません。

この状態で色々試したわけです。acpi_video は動作が怪しい kldunload acpi_video するとマシンがフリーズするので利用しないことにしました。後は sysctl の設定ですが、 /etc/sysctl.conf には以下の設定を入れました。

#hw.acpi.standby_state=S3
hw.acpi.suspend_state=S3
hw.acpi.thermal.min_runtime=300
hw.acpi.battery.info_expire=30
hw.acpi.power_button_state=S5
hw.acpi.sleep_button_state=S3
hw.acpi.lid_switch_state=NONE
hw.acpi.reset_video=1 hw.syscons.sc_no_suspend_vtswitch=1
vfs.usermount=1 hw.snd.default_unit=1

 
hw.acpi.reset_video と hw.syscons.sc_no_suspend_vtswitch を 1 にするとレジューム後に画面が表示されるようになります。

まずは X を起動せずにコンソールから acpiconf -s3 と叩くと「ヒューン」とか言ってスリープします。でもってパワーボタンはブリンクします。その後しばらくしてからパワーボタンを押すと。おぉーーっ!! 無事に復活するのであります。リモートからの ssh も接続が復活していてコマンドも受け付けてくれます。また、コンソールからもコマンドがバシバシ打てるのであります。

この辺りはミョーに感動です;-)。

と、言うことで、次に X を起動して KDE4 でログインしてから acpiconf -s3 を試してみます。スリープした後にパワーボタンを押すとバックライトは点灯するのですが、X の画面が出てきません。

ssh は利用可能なので、dev.acpi_ibm.0.lcd_brightness や dev.acpi_ibm.0.events 、そして hw.acpi.reset_video などの値を変更してみるのですが、復活する兆しは全く無いのでありました。

しゃーないので shutdown します。

次に試したのは X を起動して KDE4 でログインした後に CTRL-ALT-F1 して X の画面を一旦閉じてコンソールの画面にします。この時、コンソールではベコベコ文字が打てる状態なので acpiconf -s3 します。でもってサスペンドした後にパワーボタンを押すと、おぉっ!! コンソール画面は無事に返ってました。ここでコマンドもベコベコ打てます。

では、さっき CTRL-ALT-F1 しているので、今度は CTRL-ALT-F2 や CTRL-ALT-F3 を押して X の画面を戻すべ。とか思うのですが、ここで再度ブラックアウト。orz バックライトが点いているだけにちょっと悲しい状態なのですが、レジューム後に X が表示されることはないのでありました・・。orz

ちなみに、この状態の時、drm.ko は膨大な量のログを吐きまくっております。以下のようなログなんですけども。

info: [drm] wait idle failed status : 0xA0003030 0x00000003

 
なので問題は drm.ko 側にあるのかなぁ?などとも思えるのですが、vesa.ko でやったらどうなんだ?とか、色々あるわけなんですけどもね。

とりあえず、xf86-video なドライバは radeonhd と radeonhd-devel を試してみましたが、とちらも症状は一緒でした。とほほ。vesa ドライバでも試してみましたが、vesa の場合、ちょっと症状が変わって、壊れた X の画面が表示されたりましたが、X がまともに使える状態ではありませんでした。vesa の場合は drm.ko とか kldunload したら症状変わったりするかなぁ・・。

と、言うことで、X 無しでは無事にサスペンド・レジュームすることを確認しました。ただ、必要最低限のカーネルモジュールをロードしての確認なのですけどね。そもそも、X が動かないので、これ以上、カーネルモジュールをロードしてテストしても仕方がない。と言うのが素直な僕の感想なのですけども・・。

ThinkPadX100e は Radeon なんだけど、Core2Duo の Intel 系のグラフィックスチップの場合、無事に drm.ko も動作するのかなぁ? それがちっくと疑問なのですけども。

9月 282010
 

前回のエントリーで ThinkPad X100e 買いました−。っての書きました。でもって Windows7 x64 と FreeBSD/amd64 8.1-STABLE が動いているわけですが、今回は FreeBSD での動作についてちょっとまとめてみたいと思います。

1. サスペンド・レジューム動きません。
acpiconf -s3 で寝ることはできます。パワー LED もちゃんとブリンクするので「お。寝たか?」とか思うのですが、電源投入するとそこでフリーズします。 s5 も動きません。
FreeBSD の サスペンド・レジューム は SMP カーネルの場合、コードがスパっと抜け落ちているそうなので絶対に動作しないのでありますね。はい。ただ、シングル CPU カーネルの場合は動作するのかなぁ?試していませんし、試そうとも思いませんが・・。

2010/10/19 加筆
サスペンド・レジュームについては「ThinkPad X100e を FreeBSD で Suspend/Resume。」を参照してください。


2. 無線 LAN if_iwn は動作しません。
ThinkPad X100e は AMD のアーキテクチャなのに無線 LAN 周りは Intel のセントリーノ技術を使ってイいるんですね。利用しているチップは if_iwn 対応で Intel(R) PRO/Wireless 6250 と、言うヤツです。これと USB 接続の WiMAX 対応チップがセットになったヤツらしいのですが、以下のメッセージが出力され動作しません。

iwn0: iwn5000_send_calibration: could not send calibration result, error 22
iwn0: iwn_init_locked: could not initialize hardware, error 22

 
if_iwn.c のソースコードをチロっと眺めたところ、本来であれば iwn6250 版台(ファームウェア的には 6050 かなぁ?)なのに if_iwn.c のコード的には iwn5000 のファームウェアで動いているっぽいのでその辺りが影響しているのかもしれません。

なお、Intel(R) PRO/Wireless 625 は 802.11n に対応しているので 300Mbps 出る(論理値)のですが、ドライバ側では 802.11a/b/g にしか対応してないので 54Mbps しか速度が出ません。コード的には #if 0 って部分ですが、更に必要な define が無いのでどうしようもない状態・・。

3.サウンドチップは特殊でした。
NotePC 的にはスピーカがついているのにそこから音は出ない。けど、イヤホンジャックにヘッドホンを接続すると音が出ている。あれあれあれ?って感じですが、cat /dev/sndstat してみるとデバイスが二つ認識しているようです。

$ cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <HDA Conexant CX20582 (Pebble) PCM #0 Analog> (play/rec)
pcm1: <HDA Conexant CX20582 (Pebble) PCM #1 Analog> (play/rec) default

 
なんとっ!! pcm1 がスピーカ側のデバイスで、pcm0 がヘッドホン側のデバイスです。普段は sysctl -w hw.snd.default_unit=1 しておいて、ヘッドホンで聞く時は hw.snd.default_unit=0 する必要があります。

これは KDE-4.5.1 の Kmix (サウンドミキサーアプリ)のキャプチャですが、それぞれのデバイスのためにボリューム(「OSS Audio Mixier」ってヤツのタブ)が二つあります。ヘッドホン用とスピーカー用ですね。いやぁ。ちょっと驚き。最近の NotePC ってみんなこうなのかな?

thinkpadx100e2_1.png

mplayer とか立ち上げて映画とか見ていた場合、最初はスピーカーで聞いていたけど、ヘッドホンにしたい場合は sysctl -w hw.snd.default_unit=0 とか打つ必要があります。てもって音の出力先が変わったので mplayer は再起動し直しとなります。ふむー。

4. Fn+F?? キー使えません。
Fn+ テンキーって、ベンダ向けに用意されている acpi_*.ko をロードすれば Fn+ テンキー が利用できると思っていたのだけど、acpi_ibm.ko をkldload してもキーがマッピングされないので、音のボリューム・無線 LAN のオン/オフ・ディスプレーの明るさが変更できません。orz。 僕が最近の NotePC を知らないだけなのかも。技を知っている方、教えてください。

無線 LAN はそもそも利用しないのでずっとオフでも良いかも;-|。まぁ、仮に動作するようになったとしたら kldload/kldunload if_iwn.ko すればいーや。とか思っているんですが;-)。
音の大きさはミキサーアプリで調整するのでこれまたなんとかなりそう。
ディスプレーの明るさは acpi_video.ko を kldload すると sysctl MIB として hw.acpi.video.lcd0.brightness と言うのが生えてくるのでそこで明るさを指定します。以下のようなスクリプトを書けば良いかなー。って感じなのでありますが・・。

#!/bin/sh
sudo sysctl -w hw.acpi.video.lcd0.brightness=$1

 

多少使い込んで気がついたのはこんな感じでしょうか。まぁ、多分、標準的な「NotePC にインストールした FreeBSD の動作。」だと、僕は思っているのですけどねぇ;-P。

if_iwn は当分更新される予定は無いみたいなので半分あきらめです。最近は Windows7+IE9 も中々良いと思えるのでどうしても無線 LAN が必要な場合は Windows7 利用するかも;-P。まぁ、その前に iPhone4 があるので、多分めったに NotePC を門外に持ち出すことは無いと思うのだけどねぇ;-)。

9月 262010
 

久しぶりに AT 互換機の NotePC を購入しました。今まで利用していたのが 4,5 年前の DELL X1 。もう「遅いっ!!」などと感じ始めていたので新しい NotePC の購入に踏み切ったのでありました。

で、新しく購入したのが Levono の ThinkPad X100e。僕的に ThinkPad の購入は実に 535E 以来なのであります。二台並んだ写真。

ThinkPadX100e_1.jpg

自分でも思うけんど、この新旧二台が並んだ写真てのは中々無いとおもうぜぉ;-)。貴重な写真なのであります;-)。

と、言うことで、DELL X1 から大きく変わった点をちっくと書いておきます。

・CPU が Intel PentiumM 900MHz から Athlon Neo X2 L335 の 1.6GHz になった。
・チップセットが Intel から AMD になった。
・メモリが 2GHz から 4GByte になった(実際に積んでいるのは 3GByte)。
・HDD が 1.8 インチ 60GByte から 2.5 インチ 320GByte になった。
・無線 LAN が 802.11n に対応した。

みたいな感じでしょうか。

CPU がデアルコアになってクロックアップしたのと、HDD が 1.8 インチから 2.5 インチになったので、体感的に随分速くなったように感じます。
当初 DELL X1 の HDD を SSD に交換しようかと思ったのだけど、1.8 インチの東芝 50pin IDE タイプの SSD は 60GB だと 30,000yen を遙かに上回る値段なので購入を断念。後 30,000yen 出せば新品買えるじゃん。みたいな感じだったのでありました。

それにしても、僕はデスクトップは Intel 買わなくなって随分久しいのですが、NotePC もいよいよ AMD 系になったかー。と言う感じなのであります。今は Apple MacBook だけか。 Intel 系なのは。そんな感じなのであります。

では、ThinkPad X100e の気がついた点を少々。

例のごとく、初期インストールの Windows7 はブートもせずにサクっと消しました。後、HDD に入っていた Windows7 のリカバリー CD イメージもサクッと消したので、純正アプリに何が入っているのか全く知りません;-)。 320GB の HDD は余計なの全て消して、FreeBSD/amd64 8.1-STABLE に 80GB、Windows7 に 220GB の二つにしました。

Windows7 は Profetional x64 をインストールしました。リカバリー CD イメージはもうないので Microsoft TechnetPlus のをインストールしたので、このマシンも検証機器になりました;-)。

後で Levono に電話してリカバリー CD イメージを送ってもらおうと思っています。

Windows7 はサクっとインストールが完了しました。唯一 WiMAX のカードが認識しなかったので Levono からドライバーをダウンロードして動作するようになりました。あ。そーそー。このマシン、CPU とチップセットは AMD 、 NIC は re0 、 無線 LAN チップが Intel のセントリーノを利用してる(Centrino Advanced-N+WiMAX 6250 の組み合わせ) んですね。ある意味面白い;-)。

USB カメラがあるみたいなんだけど、使い方はイマイチ解りませんf(^^;;。まぁ、必要ないかな。

続いて FreeBSD/amd64 ですが、特に問題無くインストールは終了。pciconf -lv しても none0 が一個だけ。Centrino Advanced-N+WiMAX 6250 って FreeBSD のドライバってあるのかなぁ? GENERIC カーネルで none なんだけど・・。

後、USB デバイスが三つついています。 usbconfig list によると

ugen4.2: <USB2.0-CRW Generic> at usb
ugen4.3: <Integrated Camera Image Processor>
ugen4.4: <Intel(R) Centrino(R) Advanced-N + WiMAX 6250 Intel(R) Corporation>

らしいですが、あれ? NIC は USB なのかー。後はカメラと SD スロットみたいですね。SD スロットはフツーに認識しました。 Centrino Advanced-N は後で試してみよう。if_u のどれかを kldload したら認識するかなぁ?

現在は カーネルを 8.1-STABLE にして KDE4 を make している最中です。X も RADEONHD ドライバで RS780M/RS780MN [Radeon HD 3200 Graphics] と認識し、サクっと動いております;-)。

まぁ、2,3 世代古い構成なので枯れている。って感じでしょうか。特に難もなくどっちの OS も動作しているのであります;-)。

このネタ続くかなぁ?比較的容易に動作してしまったので特にネタは無いかも・・;-)。

あ、最後に一点。僕のパーティションの切り方の問題かもしれないですが、この PC、 Windows7 をインストールしたにも関わらず Windows7 側のブートマネージャを利用せず、以前の通り、F1 で Windows、F2 で FreeBSD がブートするようになりました。Windows7 側の bcdedit を利用して FreeBSD をブートしようとしたら「できねいぜぃ。」みたいに言われてしまいました。

難儀したのはそれくらいでしょうかねぇ。

DELL X1 と比べて随分と速くなったので今晩中に KDE4 の make は完了するかなぁ?楽しみなのであります;-)。

あ。dmesg とか pciconf -lv とか xorg.conf など見せて。って言う人いましたらコメントください。掲載しますので。

2010/10/04 加筆
dmesg とか pciconf -lv とか xorg.conf などが見たいですー。と言うコメントを頂いたので公開します。
以下の URL に色々な情報を置いたので良ければ参考にしてください。

http://icmpv6.org/Prog/tmp/ThinkPadX100e/

12月 122009
 

8.0-RELEASE がリリースされたみたいなので、自宅の PC にインストールしてみました。色々新しいデバイスドライバが使えるみたい。ってのもあるんですけどね.

最近は MacOSX をメインで使うようになって本当に FreeBSD へのモチベーションは下がりつつあるのですが、けど、おっかけないと・・。感があるわけです。

とはいいつつ、普段利用しているデスクトップとかサーバにはまだまだインストールする勇気が無いので、今は「キッチンのパソコン」と利用している EeePC にインストールしてみました。以前にもこのブログに書いているのですが、久しぶりに引っ張り出してみました;-)。

で、EeePC に USB 経由で 2.5 インチ HDD をつけて、その HDD には 7.2-STABLE が入っているわけだけど、これを cvsup で 8.0-STABLE にしたわけです。

自分でカーネル config を作成して、make installkernel して、さてと 8.0-STABLE ブートだ。と思ったら・・。あんれまぁ。USB に接続した HDD からはブートしませんでした・・。

手元に 8.0-STABLE が動作している PC が他に無いのでなんとも言えないのですが、カーネルのブート時に USB デバイスを一切認識してくれない状態。カーネルロードモジュールでは usb.ko とか umass.ko をロードしているのだけど、ブート時には USB デバイスとかチップを一切認識しないので、USB に接続した 2.5 インチ HDD、/dev/da0s1a になるわけですが、これが見えない。

なので、vfs.root.mountfrom 以前の問題だぁ・・。

http://www.mail-archive.com/freebsd-stable@freebsd.org/msg105670.html

この辺りのスレッドを見ると USB 機器からブートしないぜい。ってのがあるんだけど、これ、僕の現象とはちょっと違うよなぁ・・。

どうして USB デバイスが一切認識されないのだろう・・。まだまだ格闘は続くのであります;-)。

1月 312009
 

前回のつづきです。いろいろ試してみました。

hald を起動した時の問題点ですが、まず、NotePC のタッチパッドの左ボタンでダブルクリック及びトリプルクリックができない件ですが、これはパナソニックの CF-W5 のみの問題であることが分かりました。 DELL の X1 では無事にタッチパットの左ボタンが特に問題なく利用できました。

続いて、キーボードの 「む」のキーにおいて、「}」や「]」が入力できなくて、「\」キーと同じバインドになってしまう。と言う件ですが、これは xmodmap で対応可能です。以下の設定を ~/.xmodmaprc とかに保存して xmpdmap で実行してあげればキーバインドは刻印通りに動作します。

! }]  key setting
keycode 51 = bracketright braceright

 
と、言うことで hald 経由でも特に問題無く動作することの確認が取れました。前にも書いた通り、PS2 のマウスとキーボードを利用している場合には hald を起動する必要はなく、 xorg.conf に AutoAddDevices を false にしてキーボードとマウスの設定を利用したほうが楽かもしれません。

PS2 (タッチパッドなど) は標準で使うけと、時々 USB マウスやキーボードを使いたい。と、言う場合には hald を起動したほうが良いと言うことでしょうなぁ。

ちなみに、hald 経由の場合だと、USB のマウスやキーボードを抜き差ししても全然問題なく動作します。ただ、PS/2 キーボードがある環境で USB キーボードを付けた場合、USB キーボードで文字入力はできますが、PS/2 キーボードでは入力を受け付けなくなります。まぁ、当然と言えば当然か。

けど、マウスは PS/2 と USB の両方のマウスが動作します。さすがは /dev/sysmouse って感じでしょうか。この時、ps で確認したら USB マウスを付けた段階で moused が起動しますねー。けど、マウスや X の動作には全然問題は無いので敢えてデーモンを kill することも無いでしょう;-)。

さてと。僕の環境では xorg-7.4 の設定はこれにて全てしゅーりょー。いやぁ。良かった良かった;-)。

1月 302009
 

FreeBSD の ports の最新をおっかけていると xorg が 7.3 から 7.4 になり、X が起動しねー。とか、マウスが動かねー。キーボードが 101 だぁー。などとあちこちで大騒ぎのようです。まぁ、僕もそーだったのですけどね。

けど、、なんとか動くようにしたのでありました。僕は会社のもひっくるめて、デスクトップ二台、NotePC で二台の計四台の PC で X11 が動作しています。

デスクトップの場合、PS/2 のマウスとキーボードを利用しているぶんには非常にラクチンで、Section “Files” から RgbPath を取り去った後に以下の設定を記述すれば大丈夫です。まぁ、Xorg -configure した後にできた xorg.conf.new を利用したほうが楽ですけどね。

Section "ServerFlags"
    Option “AllowEmptyInput” “off”
    Option “AutoAddDevices”  “false”
EndSection

 
この設定を入れると xorg.conf に記述したキーボードとマウスの設定が有効になります。その時、 moused は起動してはダメになります。なので、マウスの設定の所は Device において /dev/sysmouse ではなく /dev/psm0 を指定することになります。これでマウスがちゃんと動くようになりました。めでたしめでたし。

後、キーボードのほうですが、ServerFlags の所で二つのオプションを追加しているので xorg.conf の内容をそのまま引きずってくれるので jp106 とか ctrl:swapcaps の設定は有効になったままとなるでしょう。

とまぁ、PS/2 のマウスとキーボードのみを利用した環境であれば特に問題はないのですが、NotePC のように普段はタッチパッド(こっちはたいていの場合 PS/2 として認識される)を利用するけど、時々は USB マウスを接続して利用したい。と言う場合もあるわけです。

その場合、Section “InputDevice” の mouse の設定をいちいち /dev/psm0 から /dev/ums0 に書き換えて、X を再起動してからでないと利用できません。後、タッチパッドと USB マウスの同時利用と言うのもできなくなります。あれまー。不便ですねぇ・・。困りましたねぇ。

このような場合はやはり、hald を起動して PS/2 と USB のマウスを認識させるしか手は無いのであります。同時に利用したい人はまずはともあれ hald を起動して、moused を停止しましょう。なお、/etc/rc.conf において moused_enable=”NO” と記述していても USB マウスを接続したとたんに moused が起動してしまう場合がありますが、とりあえずは無視して起動状態としておいても大丈夫でしょう。

続いて xorg.conf の設定ですが、マウスとキーボードの認識を hald で行うようにしたので上に書かれている ServerFlags セレクションの設定二行を削除します。

そして、/usr/local/etc/hal/fdi/policy/10-keyboard-jp106.fdi と言うファイルを用意し、以下の記述をします。

<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
    <device>
        <match key="info.capabilities" contains="input.keyboard">
           <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
           <merge key="input.x11_options.XkbModel" type="string">jp106x</merge>
           <merge key="input.x11_options.XkbLayout" type="string">jp</merge>
           <merge key="input.x11_options.XkbOptions" type="string">ctrl:swapcaps</merge>
        </match>
    </device>
</deviceinfo>

 
まあ、書いている内容は xorg.conf に書いた内容を XML 形式にしただけ。と言う感じでしょぅか。

準備ができたら hald が動作していることを確認しつつ、しかし新規にファイルを設置したのでいったん停止して再起動しつつ、 X を再起動してみましょう。

これで無事に起動したでしょうか? そしたら、PS/2 マウスと USB マウスが、両方動くことを確認します。続いてログインし、キーボードが 106 になっていることを確認して、CAPS キーと Ctrl キーもちゃんと入れ替わっていることを確認します。

しかし、hald 経由でキーボードとマウスを認識させたら、問題点が二つあるみたいです。

一個は僕の NotePC 固有の問題かもしれませんが、タッチパッドに付いているマウスの左ボタンでトリプルクリックができなくなりました。一行まるまるコピーの場合にトリプルクリックを利用するのでけすけど、それができない。ついでにダブルクリックもできない・・。トホホ。ちなみに USB マウスでは正常に動作しています。

二個目の問題ですが、キーボード入力で “け” の右横のキーの入力が出来なくなりました。”かっことじ” と “mu” のキーが “へ” の右横の “\” のキーと一緒になってしまいました。これは xmodmap で直せるかなぁ・・。
ちなみにこの記事を書いているキーボードが、既に打てない状態となっていますf(^^;;。
もし、正常に動作しない場合は /var/log/Xorg.0.log を確認してみましょう。どう言う風に確認するのかと言えば・・。動かない。とコメントに書いてください(^^;;。

なお、今回の設定ではコンソールのとこは考慮していません。僕はコンソール画面においてはマウスを利用しない人なので、コンソールでのマウスの挙動は良く分からないのです。

けど、せっかくなので、PS/2 版の xorg.conf と hald 版の xorg.conf を以下に置いておきますね。

PS/2 マウス版 xorg.conf
hald 版 xorg.conf

なお、上のほうは moused が起動している必要があります。下のほうは moused は起動していなくとも良いが hald が起動している必要があります。hald が起動している場合はポリシーファイルが必要です。

つづく