【Ubuntu 11.04】xvba-va-driverの依存破損を修正して入れてみる。

libva1とか、ATI のビデオカードの動画再生支援が標準で入るようになった Ubuntu 11.04だが、残念ながら、 xvba-va-driver の依存関係が破損していて入らない。

まず、ソースを取ってくる。

noizumi@purplecat:~/src$ apt-get source xvba-va-driver
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
‘xvba-va-driver’ の代わりに ‘xvba-video’ をソースパッケージとして選出しています
注意: ‘xvba-video’ パッケージは以下の場所の ‘Svn’ バージョン制御システムで保守されています:
svn://svn.debian.org/svn/pkg-fglrx/xvba-video/trunk
119 kB のソースアーカイブを取得する必要があります。
取得:1 http://jp.archive.ubuntu.com/ubuntu/ natty/multiverse xvba-video 0.7.7-1 (dsc) [1,951 B]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ natty/multiverse xvba-video 0.7.7-1 (tar) [114 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ natty/multiverse xvba-video 0.7.7-1 (diff) [3,044 B]
119 kB を 0秒 で取得しました (265 kB/s)
gpgv: 2010年12月22日 17時46分06秒 JSTにRSA鍵ID 90CBD8E4で施された署名
gpgv: 署名を検査できません: 公開鍵が見つかりません
dpkg-source: warning: failed to verify signature on ./xvba-video_0.7.7-1.dsc
dpkg-source: info: extracting xvba-video in xvba-video-0.7.7
dpkg-source: info: unpacking xvba-video_0.7.7.orig.tar.gz
dpkg-source: info: unpacking xvba-video_0.7.7-1.debian.tar.gz

依存関係で、fglrx-driverという名前のパッケージは無いので、fglrxに修正する。

noizumi@purplecat:~/src$ vi xvba-video-0.7.7/debian/control

Source: xvba-video
Section: non-free/libs
Priority: optional
Homepage: http://www.splitted-desktop.com/~gbeauchesne/
Maintainer: Fglrx packaging team <pkg-fglrx-devel@lists.alioth.debian.org>
Uploaders: Patrick Matthäi <pmatthaei@debian.org>
Build-Depends: debhelper (>= 7), libva-dev, libgl1-mesa-dev
Standards-Version: 3.9.1
Vcs-Svn: svn://svn.debian.org/svn/pkg-fglrx/xvba-video/trunk
Vcs-Browser: http://svn.debian.org/wsvn/pkg-fglrx/xvba-video/trunk/
XS-Autobuild: yes

Package: xvba-va-driver
Architecture: i386 amd64
Depends: ${shlibs:Depends}, ${misc:Depends}, fglrx-driver (>= 1:10-9), libva1
Description: XvBA-based backend for VA API (AMD fglrx implementation)
X-Video Bitstream Acceleration (XvBA), designed by AMD for its ATI/AMD Radeon
GPU, is a future extension of the X video extension (Xv) for the X Window
System on Linux operating-systems. XvBA API allows video programs to offload
portions of the video decoding process to the GPU video-hardware. Currently,
the portions designed to be offloaded by XvBA onto the GPU are motion
compensation (mo comp) and inverse discrete cosine transform (iDCT), and VLD
(Variable-Length Decoding) for MPEG-2, MPEG-4 AVC (H.264) and VC-1 encoded
video.
.
This driver only works with the proprietary fglrx driver from AMD.

noizumi@purplecat:~/src$ cd xvba-video-0.7.7/
noizumi@purplecat:~/src/xvba-video-0.7.7$ dpkg-buildpackage -d
dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor):
dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor): -Wl,-Bsymbolic-functions
dpkg-buildpackage: source package xvba-video
dpkg-buildpackage: source version 0.7.7-1
dpkg-buildpackage: source changed by Patrick Matthäi <pmatthaei@debian.org>
dpkg-buildpackage: host architecture i386
dpkg-source –before-build xvba-video-0.7.7
fakeroot debian/rules clean
dh_testdir
dh_testroot
dh_clean
dpkg-source -b xvba-video-0.7.7
dpkg-source: info: using source format 3.0 (quilt)'
dpkg-source: info: building xvba-video using existing ./xvba-video_0.7.7.orig.tar.gz
dpkg-source: info: building xvba-video in xvba-video_0.7.7-1.debian.tar.gz
dpkg-source: info: building xvba-video in xvba-video_0.7.7-1.dsc
debian/rules build
dh_testdir
dh_testdir
touch build-stamp
fakeroot debian/rules binary
dh_testdir
dh_testdir
touch build-stamp
dh_testdir
dh_testroot
dh_prep
dh_install "x86/xvba_drv_video.so" "usr/lib/va/drivers/"
dh_testdir
dh_testroot
dh_installchangelogs NEWS
dh_installdocs
dh_install
dh_link
dh_compress
dh_fixperms
dh_strip
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb:
../xvba-va-driver_0.7.7-1_i386.deb’ にパッケージ `xvba-va-driver’ を構築しています。
signfile xvba-video_0.7.7-1.dsc
gpg: “Patrick Matthäi <pmatthaei@debian.org>”をとばします: 秘密鍵が得られません
gpg: [stdin]: clearsign failed: 秘密鍵が得られません

dpkg-genchanges  >../xvba-video_0.7.7-1_i386.changes
dpkg-genchanges: including full source code in upload
dpkg-source –after-build xvba-video-0.7.7
dpkg-buildpackage: full upload (original source is included)
dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

これで、インストール可能な xvba-va-driver_0.7.7-1_i386.deb ができあがるので、

noizumi@purplecat:~/src$ sudo dpkg -i xvba-va-driver_0.7.7-1_i386.deb
[sudo] password for noizumi:
未選択パッケージ xvba-va-driver を選択しています。
(データベースを読み込んでいます … 現在 140154 個のファイルとディレクトリがインストールされています。)
(xvba-va-driver_0.7.7-1_i386.deb から) xvba-va-driver を展開しています…
xvba-va-driver (0.7.7-1) を設定しています …

動作確認

noizumi@purplecat:~/src$ vainfo
libva: libva version 0.31.1
Xlib:  extension “XFree86-DRI” missing on display “:0.0”.
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/dri/fglrx_drv_video.so
Segmentation fault

という事で、依存破損を修正してインストールしても、ダメ。

元々入れてたここのモジュールだと、vainfo で segmentation fault する事は無いが、mplayer-vaapi や vlc --ffmpeg-hw で再生できないので、根本的なところで異常となってるのかもしれない。

こういう部分を追っかけようと思うとかなり気合いを入れないといけないので、修正を待とう(^^;

Ubuntu 11.04 ffmpeg

久しぶりにエンコ活動をやろうと、ffmpeg を弄ってみようと思ったが、Ubuntu 11.04を新規インストールしたので環境が無い。

とりあえず、パッケージの ffmpeg をインストールしてみたが、やはり、「libxvid 何それ?」とおトボケ状態。

権利関係がややこしいこの手のビデオ、オーディオコーデックは Ubuntu では「自国の法律守って自己責任でね」というスタイル。

そこで拙文「Ubuntu 10.04のffmpegでlibmp3lameを使用できるようにする」を備忘録に設定しようとするも、libavcodec-unstripped-52 ってのが無くなってる。

synaptic パッケージマネージャで libavcodec を検索すると、libavcoodec-extra-52 ってのがあった。

どうやら改名されてしまったようなので次のパッケージを入れる。
・libavcodec-extra-52
削除されるパッケージ
libavcodec52
libavutil50
インストールされるパッケージ
apport-hooks-medibuntu
libavutil-extra-50
libfaac0
libmp3lame0
libopenjpeg2
libx264-106
libxvidcore4

・libavdevice-extra-52
削除されるパッケージ
libavdevice52
libavformat52
インストールされるパッケージ
libavformat-extra-52

・libavfilter-extra-1
削除されるパッケージ
libavfilter1
libswscale0
インストールされるパッケージ
libswscale-extra–0

・libpostproc-extra-51
削除されるパッケージ
libpostproc51

依存関係で自動指定済み
・libavformat-extra-52

・libavutil-extra-50
・libswscale-extra-0

で、テストエンコード

noizumi@purplecat:~/ビデオ/tmp$ ffmpeg -y -i 1304614119.mp4 -vcodec libxvid -sameq -aspect 16:9 -acodec libmp3lame -ab 128k -threads 6 1304614119.avi

無事できた。

NetworkManager の設定ファイルはどこ?

Ubuntu Desktop 環境で設定する NetworkManager の設定ファイルはどこにあるのか?が結構前から気になっていた。

個人用の設定だから、/etc/NetworkManager 以下には無いし、/home/noizumi の下にあるんだろうと思っていたが、 rgrep で検索しても出てこないし、全く謎だった。

何せ日本のGoogleで検索してもこういうお寒い状況で、全然欲しい情報が手に入らない。

# げっ、書いてる内容が内容なだけに、検索トップに来やがった…
# 単に昔からWebページを開設しているというだけで、Google様はほぼリアルタイムでわしのページを収集して下さるのだった 🙂

英語で検索するとすぐ出てくる

という訳で、
~/.gconf/system/networking

にあるのが分かった。

先日設定したモバイルブロードバンドのNTTdocomo moperaの設定は
~/.gconf/system/networking/connections/2/gsm/%conf.xml

にあって、

<?xml version=”1.0″?>
<gconf>
<entry name=”apn” mtime=”1304584824″ type=”string”>
<stringvalue>mopera.ne.jp</stringvalue>
</entry>
<entry name=”number” mtime=”1304584824″ type=”string”>
<stringvalue>*99#</stringvalue>
</entry>
<entry name=”name” mtime=”1304584824″ type=”string”>
<stringvalue>gsm</stringvalue>
</entry>
</gconf>

というように格納されていた。

この gsm の部分を cdma とかいじっても変わらないので、決定的な部分は別のところにありそう。

NetworkManager/Debugging のページで紹介されている PPPベースのデバッグをやってみたけど、有用な情報が得られない。

うーむ。あきらめるか。

【Ubuntu】携帯電話と戯れる【NTT docomo SH-02C】

Ubuntu は外人が主力開発なので、mobile phone に関してはNTT docomoの携帯電話は接続しても認識してくれない。

応用開発というところがFOMA用のドライバを作っていて、cdc-acm(FOMA対応)を落っことして来て、ゴリゴリやるもソースが古くてコンパイルに通らない。

そこで、linux-source のパッケージをインストールして展開し、その中から、cdc-acm.c と cdc-acm.h を抜きだし、FOMA用のソースとマージしてゴリゴリやったら通った。

SH-02Cを通信モードにし、USBケーブルで接続して、シリアル通信ソフトで、 /dev/ttyACM0 に115200、パリティなし、8ビット、ストップビット1、フローコントロールXon/Xoffで接続してみると…

と、ちゃんと接続できているようではある。
ATDで発呼すると電話掛けるので、pppdで使う上では問題無く使えそうだ。

しかし、ネットワーク設定のモバイルブロードバンド設定で設定しても、

May 5 15:10:09 purplecat modem-manager[845]: (ttyACM0) opening serial port…
May 5 15:10:09 purplecat modem-manager[845]: Modem /org/freedesktop/ModemManager/Modems/2: state changed (disabled -> enabling)
May 5 15:10:09 purplecat modem-manager[845]: Modem /org/freedesktop/ModemManager/Modems/2: state changed (enabling -> disabled)
May 5 15:10:09 purplecat modem-manager[845]: (ttyACM0) closing serial port…
May 5 15:10:09 purplecat modem-manager[845]: (ttyACM0) serial port closed
May 5 15:10:09 purplecat NetworkManager[843]: failed to enable/disable modem: (32) Failed to find a usable modem character set

と、moperaに接続できない。
電話掛けてる感じも無いし、根本的なところでダメな感じがするなあ。

しかたがないので、pppconfig で mopera の設定作って、pon ってやってみたらちゃんと繋がり、Webブラウジングできた。これでLinuxでのモバイル通信はOKじゃ。

一応、まぜまぜしたソースを貼っておこう
cdc-acm.c
cdc-acm.h

これを、応用開発さんのドライバのファイルと置き換え、カーネルヘッダをインストールしてあれば、make で cdc-acm.ko ができるので、それを /lib/modules/uname -r/kernel/drivers/usb/class へコピーすればOK。

参考までにウチの環境は次の通り。
noizumi@purplecat:/etc/ppp$ uname -a
Linux purplecat 2.6.38-8-generic-pae #42-Ubuntu SMP Mon Apr 11 05:17:09 UTC 2011 i686 i686 i386 GNU/Linux

コピーする前に元からあるcdc-acm.koのオリジナルファイルはバックアップを取っておいた方が良いです。

Ubuntu 11.04

Ubuntu 10.10 で、Firefox4 がCPU1個のプロセス100%で食い潰し、ブラックアウトするという現象に悩まされていたので、11.04へ飛びついた。

一度10.10からアップグレードしたが現象変わらず、クリーンインストールしてみたが、~/.mozilla のフォルダを復元すると、やっぱり同じ症状が出る。どうやら、extensionかプラグインに不都合があった模様。

詳しくは調べていないが、greecemonkey、firebug、moonlightなどの拡張の内、greecemonkeyは大丈夫なので、moonlightがあやしいかな?

クリーンインストールした時に既定のままインストールしたので、/dev/sda にGrub 起動メニューがインストールされてしまった。また、Windows7のシグナチャを破壊するのか?と思ったが、問題無く両方起動した。

これで、USB 8GBのメモリで起動切替しなくて済む。

プリインストールのWindows7 Home Editionは殆ど使っていないので、別にクリーンインストールでハードディスク全域をUbuntuにしても良かった。

しかし、BIOSやファームウエアの更新は腐れゲイツOSでないとできない場合が多いので、最低限のWindows起動環境は残しておかないといけない。困ったもんだ。

アプリケーションのメニューがウインドウではなく、上のバーに出るようになって、にユーザーインターフェースが Mac の様になった。

あと、ATIのドライバが新しくなって、Catalyst Control Center で「ティア フリー」という設定により、垂直同期待機がようやくまともに動くようになった事がうれしい。

今まで、動画再生すると、垂直同期無視で描画していたので、チラつきが非常に気になっていたのだが、それが無くなったので、素晴らしい。

VirtualBox で仮想マシンを動かして、ワークスペースに Windows7debian squeeze のウインドウを置いて、それぞれフルスクリーンにすると、こんな感じで、ワークスペース1つが仮想マシンみたいな使い方もできる。

まあ、これはconpizで既に実現していた機能で、Ubuntu はワークスペース切替をconpizでやるようにしたので、できて当たり前と言えば当たり前。

まだ、日本語で検索ができないとか完成していない部分もあるので、普通に使いたい人は、日本語Remix CDが出るまでは手を出さない方が無難。

※やけにUbuntu の日本語サイトが重いと思ったら、もう日本語Remix CDが出てたんだな。

ユーザ登録プログラム

ユーザ登録プログラムがうまく動かないので調べたが、Ubuntuのuseraddはホームディレクトリを作成しないので、そのせいでログイン失敗するようだ。

と、-m オプションを使うとうまくいった。

php crypt

アカウントを自動で作るスクリプトで

$pwd = crypt(“password”);
system(“useradd -p “.escapeshellarg($pwd).” account”);

これで Ubuntu 10.10 はログインできないんだが訳が分からん…

OpenRDサーバ稼働

Debian6のARM版で、UVCビデオカメラが繋いだだけで動いたり、ZoneMinderがパッケージで用意されていて簡単にインストールできたりと、x86版と何ら使い勝手が変わらず、連休を利用して格闘する事を想定していたのが、あっさり終わってしまって拍子抜けだ。

結局、OpenRD Ultimate に Debian6 ARM版のパッケージを使って次の環境を整えた。

・監視カメラ画像記録
・ファイルサーバ
・VPN接続
・Web Proxy
・IRCサーバ

これで今までLet’s note CF-W2のUbuntu 10.10のサーバでやっていた機能を完全に代替する事ができた。ハードディスクがハードウエアRAID1になったのと容量アップしたから、信頼性は多少上がったかもしれない。

Marvell Sheeva 1.2GHzのパフォーマンスはLet’s note CF-W2のIntel Pentium M 1.1GHzと余り変わらない感じ。

これで何が便利なのかとかは後々紹介しようと思う。
# いらないって? (^^;

【OpenRD Debian6】Zoneminderインストール

とりあえず、USBカメラをOprnRDにサクッと挿してみる。

Mar 21 02:13:10 silverfox kernel: [ 5419.372911] usb 1-1.1.2.1: New USB device found, idVendor=0ac8, idProduct=3420
Mar 21 02:13:10 silverfox kernel: [ 5419.380176] usb 1-1.1.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Mar 21 02:13:10 silverfox kernel: [ 5419.387885] usb 1-1.1.2.1: Product: Venus USB2.0 Camera
Mar 21 02:13:10 silverfox kernel: [ 5419.393168] usb 1-1.1.2.1: Manufacturer: Vimicro Corp.
Mar 21 02:13:10 silverfox kernel: [ 5419.400835] usb 1-1.1.2.1: configuration #1 chosen from 1 choice
Mar 21 02:13:10 silverfox kernel: [ 5419.522914] Linux video capture interface: v2.00
Mar 21 02:13:10 silverfox kernel: [ 5419.588143] uvcvideo: Found UVC 1.00 device Venus USB2.0 Camera (0ac8:3420)
Mar 21 02:13:10 silverfox kernel: [ 5419.604133] input: Venus USB2.0 Camera as /devices/platform/orion-ehci.0/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2.1/1-1.1.2.1:1.0/input/input0
Mar 21 02:13:10 silverfox kernel: [ 5419.617889] usbcore: registered new interface driver uvcvideo
Mar 21 02:13:10 silverfox kernel: [ 5419.639815] USB Video Class driver (v0.1.0)
Mar 21 02:13:11 silverfox kernel: [ 5420.784731] usbcore: registered new interface driver snd-usb-audio

挿しただけで認識。
ビデオデバイスのみならず、カメラ内蔵マイクロフォンも使えるようだ。

ZoneMinderをサクッと入れてみる。

root@silverfox:~# aptitude install zoneminder
The following NEW packages will be installed:
apache2{a} apache2-mpm-prefork{ab} apache2-mpm-worker{ab} apache2-utils{a}

さすがに何も入れてないから、apache2とかmysqldとか連鎖インストールするものが多いな。勿論Yと答えて暫し待つ。

終わったら、ZoneMinderのWebインターフェースの初期設定。

root@silverfox:~# ln -sf /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
root@silverfox:~# adduser www-data video
Adding user www-data' to group video’ …
Adding user www-data to group video
Done.

グループ設定を有効にする為に再起動
root@silverfox:~# reboot

ブラウザで
http://192.168.11.8/zm/
とZoneMinderのWebインターフェースを開いてモニタ追加。
設定はこれと同じ。

で、あっさり動いた。しかし、メモリが少ないせいかWebの応答が遅いな…。
後はどの程度のパフォーマンスが出るのかを検証。

marvellの sheeva 1.2GHz は大体、今サーバにしているLet’s note CF-W2のIntel Pentium M 1.1GHzと同じ位ではないかと推測しているが、ZoneMinderをmodect状態にして放置してみる。

【OpenRD】Debian 6 インストール

今までARMとは何ぞや?ARM CPUにサックリ入るLinuxは?などと情報収集をしていたが、Debian 6 squeezeを入れる事にした。

ARMというCPUはlegacy ABIとEABIとかいうのがあるらしく、OpenRDはEABIで、armelというやつがそれらしい。未だに違いが良く分からないがバイナリのエンディアンの違いかな?

Debian installer for OpenRD という、英文だが非常にシンプルかつ簡単なインストールガイドがあったので、この通りにやる事にした。

中身を読むと、Debian インストーラは NAND flash へ書き込む事はできないので、USBメモリかSATA HDDへのインストールになるとか。

Corega のRAID HDDハードディスクケースを活用して、ファイルサーバ兼 Zoneminder監視カメラ画像記録サーバ兼家庭LANゲートウエイ兼IRCサーバを構築するつもりだったので、書き込む毎に劣化していくNAND flashを使わないのはむしろ有難いくらい。

まずは、やった事のメモ。

FATかext2またはext3でフォーマットしたUSBメモリにインストーライメージを配置して読み込ませる方法と、TFTPでインストーライメージを読み込ませる方法と2通り紹介されている。

わしは空いているUSBメモリが無いのでtftpでやる事にし、
sudo aptitude tftp-hpa tftpd-hpa

と入れて、

とやって、uImageとuInitrdを配置。

OpenRDを起動して、キー押してboot途中で止める。
OpenRD Ultimateなので次を実行。

次は、SATA HDDなので、

この時に、ちゃんとファイルが読めていると、#マークが多数表示される。
T T T…とか表示されていると、tftpdのファイルが正しく読めていない。

そしてインストーラ起動。

SATAインターフェースに繋いであるハードディスクが起動時に認識され、ハードディスクパーティションを適当に握ってくれるので、既定のままGO!GO!

途中色々聞かれるけど、適当に答え、インストールするのは、sshサーバだけ選んでインストール完了。

再起動後、再びキーを押してbootを止め
setenv bootargs_console console=ttyS0,115200
setenv bootcmd_sata ‘ide reset; ext2load ide 0:1 0x01100000 /uInitrd; ext2load ide 0:1 0x00800000 /uImage’
setenv bootcmd ‘setenv bootargs $(bootargs_console); run bootcmd_sata; bootm 0x00800000 0x01100000’
saveenv

と設定して

で起動!…

せぬわ!

Bad Magic Numberとか言われて怒られる。どうもパーティション指定が違っているようなのだが、どうやれば正しくなるのかさっぱり分からん。

で、困った時のOpenRDフォーラム頼り。
さすが Debian squeeze 出たばっかりだから、ヒトバシラーがおるわおるわw
これを参考にすると、ide reset とか ext2ls とか新たな技を覚えた。

Marvell>> ide reset

Reset IDE:
Marvell Serial ATA Adapter
Integrated Sata device found
[0 1 0]: Enable DMA mode
Device 1 @ 0 1:
Model: WDC WD5000AAKS-00A7B2                    Firm: 01.03B01 Ser#:      WD-WMASZ0170852
Type: Hard Disk
Supports 48-bit addressing
Capacity: 476940.0 MB = 465.7 GB (976773152 x 512)

これを見ると、ide 1:1 と指定するのが正しいようだ。
なるほど、内部のSATAが0で外部のeSATAソケットが1になる訳だな。

setenv bootargs_console console=ttyS0,115200
setenv bootcmd_sata ‘ide reset; ext2load ide 1:1 0x01100000 /uInitrd; ext2load ide 1:1 0x00800000 /uImage’
setenv bootcmd ‘setenv bootargs $(bootargs_console); run bootcmd_sata; bootm 0x00800000 0x01100000’

そして

無事起動。
とりあえず、今日はここまでで、後でV4Lとかzoneminderインストールとかやろう。