Virtualbox Direct X修復

VirtualBox 4.1.12r77218がリリースされたので、guest の Windows 7 の VboxAdditions もアップデート。

ところが、Restoring d3d8.dll adn d3d9.dll というページを表示してストップする。
どうやら、VirtualBox 4.1.8 の前まで、Microsoft オリジナルの DirectXファイルを保存せずに上書きしていて、最近のバージョンでオリジナル保存の方式に変えたけど、既に上書き済みで、MicrosoftオリジナルのDirectXじゃないから警告が出ていたようだ。

修復方法は先のページ書いてある通りだが、C:\Windows\sysWOW64\dllcache の中身を手動で空にしてやらないとダメだった。この中にVirtualBoxはオリジナルdllを保管するようだ。

修復にはインストールDVDからdllを取り出して上書きするしかないが、Windows 7の場合はエディションによって、数字のディレクトリから該当するファイルを取り出さないといけない。

わしのは professional だが、1~4までディレクトリがあって、4だろうと思ったら、違ってた。
[1].xmlを覗くと、3のディレクトリがprofessionalのディレクトリだった。

修復して、aero試したけど、やっぱり上下二重化は直ってない。
しかし、この手の情報の日本語リソースは相変わらず少ないのう。

Linuxユーザーは人に非ず

昨年、au one net でログインできなくて、IDとパスワードを入れてログインすると、一発で、「ログインできません。複数回間違った為、アカウントはロックされました。」という趣旨のメッセージが出てログインできない状態だったので、サポートにゴルァした。

クレジットカード不正利用があり、変更しようと思ったのだが、「ユーザーページにログインして申請しやがれ」みたいな感じで、ユーザーページでログインとパスワード再発行を繰り返し、「ログインできるかな?」「ざーんねん」というログインゲームを繰り返しやらされた。

結局、サポートからはログインができない理由の明確な回答は得られず、必要な情報を知らせてくれれば郵送で変更申請用紙を送るという事で決着した。

多分、UserAgent で Windows か Macintosh かってのは見ていて、それ以外はダメみたいな処理してるんだろうけど、IDとパスワード入れたら、一発でアカウントロックって、どんなおつむの足りない処理だ?

まるで、docomo 携帯の「お手上げになったらソフトリセットに飛ばす」つーのと一緒じゃねーか。

で、今日、久しぶりに Linux でアクセスしたら、進歩してて驚かされた。

> 2.動作推奨環境外でご利用の場合
> 動作環境

Linux の firefox でログインできないのは相変わらずだが、昨年まではいきなり「アカウントがロックされました」だったのが、「動作環境がダメなのかも」って項目が追加されてたよ 🙂

ダメじゃん…。

それと、MY EPSON

母親の年賀状印刷の為、素材を貰おうと思い、メンバー登録したのだが、機種登録の「使っているドライバ」で Linux の項目が無い。必須項目の癖に選択肢で選択できる項目が無い。

何かそれで萎えてしまって、アンケートの趣味の項目とか回答拒否したくなって全部「その他」にした。

そして、年賀状素材をと思ったら、Windows か Macintosh のアプリケーションダウンロード? Web印刷は Internet Explorer以外対象外?

ダメじゃん…。

まあ、印刷は微妙な位置決めとか制御の関係上、環境限定も致し方無いとは思うが、売国奴Canon のCREATIVE PARKだと、年賀状素材をJPEGで提供しているので、Linux でも縁なしで葉書に印刷できるから、こっちの方が使い勝手が良い。

Internet ってのは、どんなコンピュータ環境でも情報を共有できるってところが利点のはずで、Webブラウザなら、規格に従えば、環境は問題無いはずなのだが、世の中には Windows と Macintoshしか存在しないというバカな処理系をやっている所が存在する。

たとえば、地元銀行などは、JavaScript で UserAgent を判定して弾くなどという驚くべきマヌケな処理をやっているが、ソース読んで JavaScript で飛ばす URL へ直に飛べばログインできてしまう。

厳密さと信用を求められる銀行の処理が JavaScript という環境に依存する処理前提なのもマヌケだが、ソース見たら、それをすり抜けられるという、いい加減な処理でOKにしてしまっているのもマヌケだ。加えて、問い合わせはインターネットでは一切できず、電話しやがれというスタイル。

昔流行った言葉の…なんつったっけな? デジタルディバイド? を地で行っている感じだ 🙂

もう一つの地元の銀行は、元わしが居た会社系の銀行の系列で、そっちの方はオンラインバンキングがいかにも技術者が作りましたって感じで、LinuxのFirefoxだからって拒否したりしない。

試しにテキストブラウザの w3m でログインしてみたら、ちゃんとログインできて残高照会もできた。さすが本質を良く分かってるなと感心する。規格に従って実装していれば、そもそも「Windows や Macintosh 以外を排除」なんて発想なんか出てこないはずだが、何でそういうマヌケな事をやりたがるのかさっぱり分からんな。

Windows 8 Developer Preview

9月頃話題になっていた Windows 8 Developer Preview 64bit(x64)を今更ながらに VirtualBox Guestに入れてみた。

Guest Additions のインストールはOSの自動認識に失敗するっぽいので、明示的に VBoxWindowsAdditions-amd64.exe を一覧から選択して管理者権限で実行。

そして、WDDM ドライバを入れてやらないと画面が真っ黒になるので入れる。

わしのUbuntu 11.10(ATI/AMDプロプライエタリFGLRX グラフィックドライバー使用)の環境だと、VirtualBox Ver. 4.1.6r74713 の GuestAdditons の  WDDM ドライバを使うと、Windows 7で表示がおかしくなるのだが、Windows 8 Developer Preview でも変わらず

ウインドウの上と、ステータスバーの下が二重に表示される。

これが見た目通りの位置で操作できればまだいいのだが、実際のアイコンは二重表示が無い位置にある。

 

どういう状況かは実際に見てもらうと解りやすいと思うが、左の画像の様に、実際に操作できる位置が下の方は下にズレ、上の方は上にズレる。

これは、VirtualBox のWDDMドライバがウインドウサイズ計算を間違っている為だろうと思うのだが、何とも使いにくい。

しかし、Windows 8 Developer Preview の場合、Guest Additions を全く使わないか、WDDM ドライバを入れて使うかの二択しかない。

どちらかと言えば、Windows の方をまともに使いたいと思うなら、現状の VirtualBox の Guest Additions Ver. 4.1.6r74713 は入れない方が良いでしょう。

Hauppage WinTV PVR USB2のラジオ

Linux でラジオ聞く方法をずーーーーーっと調べていたが結局分からず。
こうなったら試行錯誤ナリ。

WinTV PVR USB2はハードウエアエンコーダー搭載で、映像は音声付きのmpegストリームが、/dev/video1 (わしのノートPCはカメラが付いているので、こうなる)から読み出す事ができる。

mplayer /dev/video1
とやると、ちゃんとCompositeの映像が音声付きで出てくる。

という事は、音声もPCMではなく、mpeg?
という事で、

ivtv-radio -f 89.4 -d /dev/radio0 -i /dev/video1 -c “mplayer %s”

と、mplayerに出力を渡してやったら、 α-station が聞けた。
別の端末開いて、

ivtv-radio -f 77.0 -j -g

とやると、E-Radioも聞けた。-g オプション付けると、別の局に変えたい時に周波数を打ち込めば変えられるので多少操作性が向上する。

WinTV PVR USB2付属のラジオアプリだと、84MHzあたりが最低周波数なのだが、ivtv-radio で周波数をセットしてやるとちゃんとその下の周波数もチューニングできる。

これで radiko でエリア外の為に聞けないα-stationがパソコン操作で聞けるようになった。でもノイズレスのクリアな音声じゃないけど、ふとFMラジオが聞きたい時に席から遠くにあるラジオを操作するのが面倒くさいから、これはわしにとっては大きな効用なんだな 🙂

【Ubuntu 11.10 64bit】システム音が鳴らぬ

おととい、Mynthtvでスカパーを視聴しつつ、Firefoxで動画サイトを開き、flash playerが起動した途端、音が消えた。

再起動しても音が出ず、サウンド設定を見てみると、音響効果タブの音量がミュート、出力が「内部オーディオアナログステレオ」では無く、「Manhattan HDMI Audio[Mobillity Radeon HD 5000 Series] Digital Stereo (HDMI)」になっていた。

なぜこの設定が変わってしまったのかさっぱり分からないが、出力を正しく直したら、音が出るようになった。しかし、ログイン時の音など、システムの音がSkypeやEmpathyの音も含め、ミュートを解除しても全く出なくなってしまった。

検索しても、~/.local/share/sounds に /usr/share/sounds以下の音ファイルをコピーするってのがあり、一応、~/.local/share/sounds/__custom ってディレクトリ作って音源ファイル入れてみたが、本質的な解決になってないので消した。

で、例によって英語圏へ探索の手を伸ばしてみると、ズバリ同じ症状の例があった。
theme_name が freedesktop になってしまうのも全く同じ。でも解決に至ってない。

まあ、何かヒントになるかもしれないと、 gconf-editor で /desktop/gnome/sound/theme_name を ubuntu に書き換えても、サウンド設定の音響効果のタブで、「デフォルト」以外を選択すると、なぜか __custom って設定になり、デフォルトに戻すと、 freedesktop に戻されてしまう。

__customってのは消してしまったから無いのだが、なぜ????

おそらく、どこかに候補を作っていて、その中からこの freedesktop というのが設定値として選ばれるのだろうが、その候補がどこに格納されているのやら分からない。

ゲストセッションでログインすると、ログイン音は鳴るので、gnome の個人設定に致命的な不具合があるのは確実なのだが、どこに格納されているのやらさっぱり分からない。

ログイン時の音の再生で、
/usr/bin/canberra-gtk-play –id=”desktop-login” –description=“GNOME Login”

を実行するが、今までは音が鳴っていたという事は、 /usr/share/sounds/ubuntu/stereo の中のdesktop-login.ogg を読みに行っていた訳で、じゃあ、その /usr/share/sounds/ubuntu/stereo って PATHはどこに記憶されてたの?というのが、さっぱり分からない。

以前の Linux の感覚なら、こういう設定は、特定の場所にテキストファイルに格納されている事が多いから、プログラムの不具合でおかしな情報が書き込まれても、修正は容易だった。

しかし、逆にそれが、良く理解していない人間が無茶苦茶な博打設定をやって、システムを破壊してしまうという事にも成り得た。

それで、「システムを破壊しにくくする為に隠してしまおう」なんて流れで設定箇所が分かりにくくなっているのかもしれないが、システムに不具合があっても簡単に直せなくなってるってのはよろしくない。

とりあえず、ホームディレクトリで隠しファイルも含めて全て調べるべく、
find -exec grep -H “__custom” {} \;

なんてやっているが、ホームディレクトリ以下には膨大な数のファイルがあり、しょうもない不具合の解決の為に膨大な時間を使って検索するってのが馬鹿げている。

で、膨大な時間をかけて検索したのに、
noizumi@purplecat:~$ find -exec grep -H "__custom" {} \;
バイナリファイル ./VirtualBox VMs/Debian6/Debian6.vdi に一致しました
バイナリファイル ./VirtualBox VMs/Ubuntu 11.10 64bit/Ubuntu 11.10 64bit.vdi に一致しました
./.bash_history:rm -rf __custom/
./.bash_history:cd __custom/
grep: ./.googleearth/instance-running-lock: そのようなファイルやディレクトリはありません
grep: ./.dropbox/iface_socket: そのようなデバイスやアドレスはありません
grep: ./.dropbox/command_socket: そのようなデバイスやアドレスはありません
grep: ./.pulse/f22b66f362fa794e71d1f7120000000a-runtime: そのようなファイルやディレクトリはありません
grep: ./.config/google-chrome/SingletonCookie: そのようなファイルやディレクトリはありません
grep: ./.config/google-chrome/SingletonLock: そのようなファイルやディレクトリはありません
grep: ./.config/google-chrome/SingletonSocket: そのようなファイルやディレクトリはありません
grep: ./.mozilla/firefox/dlxj05i8.default/lock: そのようなファイルやディレクトリはありません
./.mozilla/firefox/dlxj05i8.default/Cache/5/B8/1C0CBd01:find -exec grep -H &#8220;__custom&#8221; {} \;</p>
grep: ./.kde/socket-purplecat: そのようなファイルやディレクトリはありません
grep: ./.kde/tmp-purplecat: そのようなファイルやディレクトリはありません
バイナリファイル ./.cache/event-sound-cache.tdb.ebf753585907fe619b4f03770000000d.x86_64-pc-linux-gnu に一致しました

出てこぬわ!

そこで博打設定 🙂
$ rm -rf ~/.pulse

管理者アカウントをもう一つ作ってログイン
$ sudo cp -r ./.pulse /home/noizumi
$ sudo chown -R noizumi:noizumi /home/noizumi/.pulse

~/.pulse の中にはシンボリックリンクがあって、 /tmp のディレクトリにリンクしているので、そのまま再ログインしてもおかしくなる可能性が高い。

$ sudo reboot

自分のアカウントでログインしてみると、Skypeのログイン音が鳴り、サウンド設定で音響効果のタブの音量が0になってたのを直したら、無事音が出るようになった。

gnome のせいかと思ったら、 pulseaudio が悪さしていた の巻

だったでござるよ。ニンニン。

【Ubuntu 11.10 64bit】コンパイルが通らぬ

Intel Turbo boostの状況を見るべく、i7zをmakeすると、

noizumi@purplecat:~/src/i7z-0.26$ make
rm -f *.o i7z
If the compilation complains about not finding ncurses.h, install ncurses (libncurses5-dev on ubuntu/debian)
gcc  -g -O0 -fomit-frame-pointer -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DBUILD_MAIN -Wall -Dx64_BIT -lncurses -lpthread -lrt  i7z.c helper_functions.c i7z_Single_Socket.c i7z_Dual_Socket.c -o i7z
i7z_Single_Socket.c: 関数 ‘Single_Socket’ 内:
i7z_Single_Socket.c:83:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:83:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_socket_single’ 内:
i7z_Single_Socket.c:211:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:206:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_single’ 内:
i7z_Single_Socket.c:619:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘Dual_Socket’ 内:
i7z_Dual_Socket.c:37:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:37:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z_socket’ 内:
i7z_Dual_Socket.c:154:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:149:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z’ 内:
i7z_Dual_Socket.c:570:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
/tmp/ccyXWW18.o: In function Single_Socket':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:92: undefined reference to
initscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:93: undefined reference to start_color'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:95: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:95: undefined reference to wrefresh'
/tmp/ccyXWW18.o: In function
print_i7z_socket_single':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:114: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:115: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:117: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:122: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:242: undefined reference to mvprintw'
/tmp/ccyXWW18.o:/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:267: more undefined references to
mvprintw' follow
/tmp/ccyXWW18.o: In function print_i7z_socket_single':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:527: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:527: undefined reference to wrefresh'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:543: undefined reference to
mvprintw'
/tmp/ccyXWW18.o: In function print_i7z_single':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:582: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:587: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:648: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:648: undefined reference to wrefresh'
/tmp/ccY0TCqr.o: In function
Dual_Socket':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:46: undefined reference to initscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:47: undefined reference to
start_color'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:49: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:49: undefined reference to
wrefresh'
/tmp/ccY0TCqr.o: In function print_i7z_socket':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:185: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:211: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:212: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:213: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:214: undefined reference to
mvprintw'
/tmp/ccY0TCqr.o:/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:215: more undefined references to mvprintw' follow
/tmp/ccY0TCqr.o: In function
print_i7z_socket':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:488: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:488: undefined reference to
wrefresh'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:502: undefined reference to mvprintw'
/tmp/ccY0TCqr.o: In function
print_i7z':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:539: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:540: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:601: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:601: undefined reference to
wrefresh'
collect2: ld はステータス 1 で終了しました
make: *** [bin] エラー 1
noizumi@purplecat:~/src/i7z-0.26$ locate ncurses.h
/usr/include/ncurses.h
noizumi@purplecat:~/src/i7z-0.26$

でも

noizumi@purplecat:~/src/i7z-0.26$ gcc  -g -O0 -fomit-frame-pointer -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DBUILD_MAIN -Wall -Dx64_BIT -lpthread  i7z.c helper_functions.c i7z_Single_Socket.c  i7z_Dual_Socket.c -lncurses -lrt -o i7z
i7z_Single_Socket.c: 関数 ‘Single_Socket’ 内:
i7z_Single_Socket.c:83:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:83:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_socket_single’ 内:
i7z_Single_Socket.c:211:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:206:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_single’ 内:
i7z_Single_Socket.c:619:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘Dual_Socket’ 内:
i7z_Dual_Socket.c:37:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:37:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z_socket’ 内:
i7z_Dual_Socket.c:154:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:149:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z’ 内:
i7z_Dual_Socket.c:570:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
noizumi@purplecat:~/src/i7z-0.26$

こうやれば通る。

Makefileの中に指定してあるオプションをコマンドラインで打ってやれば、コンパイルが通り、Makefileだと ncurses のライブラリが見つからないとぬかしてシンボルエラーが出まくる。

i7zの場合は、issue に全く同じ症状の人が居て、根本的な解決法になっていないが、一応、動作するものができたが、xawtv4のビルドでも、リンカで必要なライブラリが揃っているのにリンクできないという同じ症状が出ている。

xawtv4の場合は関連ファイルが多いから、一々、コマンドライン手打ちでやってられぬ。そもそも make はそういうコマンドライン手打ちを一々やらない為のシステムで、本末転倒じゃ。

これだけおかしな状況になってるのに、検索しても余り騒いでいる人を見かけないが、わしが時代に取り残されておるのかのう。

Hauppauge WinTV PVR USB2

Amazon USに新品残り1個だったので衝動買い。

LD-BOXとか捨ててしまうには惜しいアナログメディアがあるので、デジタル化しようと思い、アナログTVキャプチャ、ハードウエアエンコーダー搭載でUSBで、Linuxで使えるヤツという非常に厳しい要件を満たす数少ない製品を探した。

見つけたのがWinTV PVR USB2で、新製品にデジタルテレビ用のものもあるらしいが、2万円弱もするし、どうせデコードしてキャプチャに食わせないといけないし、地デジチューナーは持ってないから、アナログ用でOK

mythtv でコンポジット出力のアナログスカパーとかのテレビを観れるようにはなったけど、いかんせん、日本語の情報源が極めて少ないので、xawtvとか、ラジオチューナーからラジオを聞くとかの制御が成功していない。

ところで、このキャプチャデバイス、mythtvで録画すると、「録画できません」って番組の録画できるのねん 🙂

EPSON PX-403A

Amazonで買ったデジタル複合機PX-403A(\3,852)が届いた。

筐体は白いプラスチックで、PP(PreProduct)品に艶出しコーティングをしただけの様な感じで、安っぽく、玩具みたい…。

コストダウンに凄い努力をしている事が伺われる。が、可動箇所が多いので、輸送時に傷にならない為のビニールコーティングとテーピングが半端じゃない。この部分は検討の余地あり。

で、インクカートリッジを装着して、Ubuntu 11.10 64bitにUSBでさっくり繋いだら動くかな?と思ったら甘かった。

一応、Linux は USB に新たな周辺機器を接続すると、自動でドライバをシステムに組み込む機構があるのだが、PX-403Aはドライバが無かった。

一覧から似たようなプリンタを選ぶかなと思ったが、ふと検索してみると、アヴァシス株式会社に PX-403A の Linux用ドライバがありやがりましたよ 😀

この会社って昔はエプソンアヴァシスって社名だったような気がするが、社名変更か、資本移動でもあったのかな?まあ、それはサテオキ。

PX-403Aは複合機なので、オールインワンの中からこのページ
epson-inkjet-printer-201103j_1.0.1-1lsb3.2_amd64.deb
をダウンロードし、Ubuntu ソフトウエアセンターでインストール。

で、プリンタの電源入れ直したらプリンタが認識され、テストページも問題無く印刷できた。印字品質に拘りは無いが、pixus 80i と大差無い気がするな。

そういえば、PX-403Aは複合機だからスキャナとしても使えるのだが、スキャナドライバを探してみたら、オールインワンのページの下にImage Scan! for Linux ってのがあった。

データパッケージ
iscan-data_1.11.0-1_all.deb
PX-403用64bit[libltdl7]コアパッケージ
iscan_2.27.1-4.ltdl7_amd64.deb

インストール方法
userg_revO_j.pdf

をダウンロードして、PDFを見ながら、Ubuntu ソフトウエアセンターでインストール

PX-403Aの電源再投入でスキャナとして認識され、インストールした Image Scan! for Linux はdashホームからだと、「グラフィックス」の絞り込みでアイコンが出る。

ペンギンがイカす!

取り込みはpngで、300dpiだと結構高速に取り込んでくれる。

1200dpiとかやると死ぬほど遅いが、万単位のピクセルになるし、画像ビューワーで見たらギガ単位でメモリ食うので充分死ねる(笑)

わし的にPX-403Aは大満足。複合機で3,852円という超激安なのにこの機能とLinuxへの気合の入れっぷりが気に入った。3万円位出して買っても安すぎるという感じすらする。

Linux 環境だと、インク残量が分からないのは残念だが、製品の機能をソフトウエアがそれなりにハンドリングしてるというだけで感動するな。

Ubuntu 11.10

11.04のアップデートマネージャからサクっとアップグレード。

環境的には余り変化が無い。

Skypeがタスクバーに入らなくなるとか、conky のcoretempのパラメータを書き換えないと動かないとか、日本語フォントが見にくいとかあるけど、今までとほぼ変わりなく使えている。

kernel が 3.0 になったので、dkms 関係をキッチリしとかないといけない。

noizumi@purplecat:~$ dkms status
bcmwl, 5.100.82.38+bdcom, 2.6.38-11-generic, x86_64: installed
bcmwl, 5.100.82.38+bdcom, 3.0.0-12-generic, x86_64: installed
cdc-acm, 2.6.38-8, 2.6.38-11-generic, x86_64: installed
cdc-acm, 2.6.38-8, 3.0.0-12-generic, x86_64: installed
fglrx, 8.881, 2.6.38-11-generic, x86_64: installed
fglrx, 8.881, 3.0.0-12-generic, x86_64: installed
vboxhost, 4.1.4, 2.6.38-11-generic, x86_64: installed
vboxhost, 4.1.4, 3.0.0-12-generic, x86_64: installed

cdc-acm はFOMAの携帯電話を繋ぐドライバで、このあたりのネタをdkmsで設定して、カーネルがアップデートされても自動的にドライバを再構築するようにしてあるのだが、kernel 3.0 でもドライバが勝手に入ってるな。

しかし、元ソースがkernel 2.6.38-8から取ってきたcdc-acmなのと、diff 取ってみたら2.6.38と3.0.0の cdc-acm.c は変更されているので、3.0.0のcdc-acmにする。

kernel 3.0に入ったカーネルドライバを削除
# dkms remove -m cdc-acm -v 2.6.38-8 -k 3.0.0-12-generic

——– Uninstall Beginning ——–
Module:  cdc-acm
Version: 2.6.38-8
Kernel:  3.0.0-12-generic (x86_64)
————————————-

Status: Before uninstall, this module version was ACTIVE on this kernel.

cdc-acm.ko:
– Uninstallation
– Deleting from: /lib/modules/3.0.0-12-generic/updates/dkms/
– Original module
– No original module was found for this module on this kernel.
– Use the dkms install command to reinstall any previous module version.

depmod………..

DKMS: uninstall Completed.

前の環境でlinux-sourceパッケージをインストールしてあったので、アップグレードしたら、 /usr/src/linux-source-3.0.0.tar.bz2 が既にあった。

$ sudo su –
# cd /usr/src
# sudo tar xvjf linux-source-3.0.0.tar.bz2

で、もりっと展開。

応用開発さんのドライバを取ってくる
# wget “http://sourceforge.jp/frs/redir.php?m=osdn&f=%2Fcdc-acm%2F33631%2Fcdc-acm-v026.zip” -O cdc-acm-v026.zip
# unzip cdc-acm-v026.zip -d cdc-acm-3.0.0-12
Archive:  cdc-acm-v026.zip
inflating: cdc-acm-3.0.0-12/cdc-acm.h
inflating: cdc-acm-3.0.0-12/cdc-acm.c
inflating: cdc-acm-3.0.0-12/Makefile
inflating: cdc-acm-3.0.0-12/readme.txt

さっき展開したソースから、cdc-acm.c cdc-acm.h をコピー
# cp linux-source-3.0.0/drivers/usb/class/cdc-acm.* cdc-acm-3.0.0-12

cdc-acm.c.patch
cdc-acm.h.patch

このファイルをそれぞれ適用
# cd cdc-acm-3.0.0-12
# patch <cdc-acm.c.patch.txt
patching file cdc-acm.c
Hunk #1 succeeded at 66 with fuzz 1 (offset -35 lines).
Hunk #2 succeeded at 876 (offset -93 lines).
Hunk #3 succeeded at 886 (offset -93 lines).
Hunk #4 succeeded at 933 (offset -93 lines).
Hunk #5 succeeded at 999 (offset -89 lines).
Hunk #6 succeeded at 1277 with fuzz 2 (offset -77 lines).
Hunk #7 succeeded at 1632 (offset -76 lines).
# patch <cdc-acm.h.patch.txt
patching file cdc-acm.h
Hunk #2 succeeded at 147 (offset -11 lines).

Makefile の先頭行をコメントアウト
#KERNEL_VERSION  := uname -r

dkms.conf を用意してやる
PACKAGE_NAME=”cdc-acm”
PACKAGE_VERSION=”3.0.0-12″
CLEAN=”make clean”
MAKE[0]=”cd ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build; make KERNEL_VERSION=${kernelver}”
BUILT_MODULE_NAME[0]=”cdc-acm”
BUILT_MODULE_LOCATION[0]=””
DEST_MODULE_LOCATION[0]=”/kernel/drivers/usb/class”

DKMSに追加
# dkms add -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic

Creating symlink /var/lib/dkms/cdc-acm/3.0.0-12/source ->
/usr/src/cdc-acm-3.0.0-12

DKMS: add Completed.

buildしてみる

# dkms build -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic

Kernel preparation unnecessary for this kernel.  Skipping…

Building module:
cleaning build area….
cd /var/lib/dkms/cdc-acm/3.0.0-12/build; make KERNEL_VERSION=3.0.0-12-generic….
cleaning build area….

DKMS: build Completed.

install してみる
# dkms install -m cdc-acm -v 3.0.0-12 -k 3.0.0-12-generic

cdc-acm:
Running module version sanity check.
– Original module
– Installation
– Installing to /lib/modules/3.0.0-12-generic/updates/dkms/

depmod….

DKMS: install Completed.

# dkms status
bcmwl, 5.100.82.38+bdcom, 2.6.38-11-generic, x86_64: installed
bcmwl, 5.100.82.38+bdcom, 3.0.0-12-generic, x86_64: installed
cdc-acm, 2.6.38-8, 2.6.38-11-generic, x86_64: installed
cdc-acm, 3.0.0-12, 3.0.0-12-generic, x86_64: installed
fglrx, 8.881, 2.6.38-11-generic, x86_64: installed
fglrx, 8.881, 3.0.0-12-generic, x86_64: installed
vboxhost, 4.1.4, 2.6.38-11-generic, x86_64: installed
vboxhost, 4.1.4, 3.0.0-12-generic, x86_64: installed

2.6.38のカーネル使う時は2.6.38用、3.0.0のカーネル使う時は3.0.0用のcdc-acm.koが使われるので運用はこれで良いが、よく考えたら、カーネルアップデートが掛かったら、両方共 cdc-acm.ko だからマズいなあ…

3.0.0 カーネルはわしの使用用途では特に問題は出てないし、2.6.38カーネル消すか。

【Ubuntu 11.04】apacheのuserdirのphp設定

ユーザーディレクトリでphpを動かそうとするも、ファイルをダウンロードしようとする?

調べると、Ubuntu 10.04 の Apache2 userdir で PHP が動かない件を見つけ、

noizumi@purplecat:/etc/apache2/mods-available$ sudo vi php5.conf

#    <IfModule mod_userdir.c>
#        <Directory /home/*/public_html>
#            php_admin_value engine Off
#        </Directory>
#    </IfModule>

とやったら動くようになった。

別の環境で、ユーザーディレクトリでphpを動かしていて、こんなの設定した覚えは無いのだが…。