月別アーカイブ: 2007年1月

PS3 をネットラジオプレイヤーに

Linux を使って Playstation3 をネットラジオプレイヤーにしてみました。
ゲームをしていないときの PS3 活用方法として意外に便利かもしれません。

PS3 に Fedora Core 5 を full install するとさまざまなアプリケーションが
入りますが、そのままでは mp3 の再生ができないようです。
ネットで調べると、この辺いろいろと設定したりソフトウエアやプラグインを
インストールしたりと少々手順が必要です。
ところが同じ Linux でも、FC5 ではなく Debian の方を使うと
特に何もしなくても再生することができました。

もっとも、PS3 の場合音楽再生だけなら GAME-OS (XMB) でもできるので、
ここではネットラジオを再生してみます。

以下 PS3 上の Debian (Etch) の設定です。

● サウンドを有効にする

Debian では最初 PS3 用のサウンドドライバが読み込まれていないため、
「modprobe snd_ps3pf」を実行する必要があります。

この読み込みを自動で行うために、/etc/modules に snd_ps3pf という行を追加
します。テキストエディタで編集してください。追加後下記のようになりました。

——————–

gelic_net
loop
ps3pf_storage
snd_ps3pf

——————–

設定したら一度再起動しておきます。

●データの再生

これで一般的な音楽データは再生できるようになります。
例えば mp3 ファイルの再生も OK です。
ただし標準で立ち上がる「動画プレイヤー」(totem)だとかなりノイズが乗るので
Rhythmbox の方をお勧めします。

●インターネットラジオの再生

Rhythmbox の演奏メニューから「新しいインターネット・ラジオ局」を開きます。
ここに再生用の URL を入力すれば OK です。
入力した URL がラジオ局一覧に入るので、ダブルクリックで再生できます。
URL は .pl や .m3u 等のファイルをエディタで開くと確認できます。

もしくはブラウザでネットラジオのページの再生ボタンを押して、
アプリケーションで開く先を Rhythmbox にします( /usr/bin/rhythmbox )。
これで簡単にラジオ局一覧に取り込めるようになります。
SHOUTcast の再生もできました。

標準のブラウザだと開く先のアプリケーションをその場で指定できないので
「動画プレイヤー」(totem) が起動してしまいます。
先に Firefox を入れておいた方がよいでしょう。
ターミナルから下記のように実行して追加できます。

 $ su
 # apt-get update
 # apt-get install firefox
 # exit
 $ firefox

●他のプレイヤーの追加

Rhythmbox ではなく他のプレイヤーを使うこともできます。
この場合ブラウザでクリックしてプレイヤー選択するだけで再生できます。
例えば xmms を追加するなら Firefox と同じように

 # apt-get update
 # apt-get install xmms

と実行します。これでインストール完了です。メニューから呼び出せます。

Debian の場合 Live CD を簡単に作れるので、CD から起動できるネットラジオプレイヤー
なんてできそうですね。

DirectX Direct3D10

GeForce8800 のドライバが出た(?)ので早速 D3D10 を試しています。
ずっと DirectX SDK には Direct3D10 の Preview が付属していましたが、
RTM した December でもマニュアルが融合しただけで D3D9 も D3D10 もどっちも
入った状態なのは一緒です。

これまでも、DirectX9 に入ってた DirectInput はずっと DirectInput8 の
ままだったし、DirectSound も DirectSound8 でした。
なので Direct3D も、DirectX 全体のバージョンとは独立したナンバリングが
行われたようです。

といっても、もともと DirectX の初期の頃は各コンポーネントごとにばらばらに
インターフェース番号がついてました。

で、確か DirectX7 のときに SDK 全体の番号と各インターフェースの番号の統合
が行われました。ほぼ全部のインターフェースの番号を SDK の番号にあわせたわけ
です。

だから元に戻ったようなものでしょうか。

D3D10 はインターフェース周りからフォーマット名のシンボルから使い方まで
Direct3D9 と全く違ったものになってます。
結構大変に見えるかもしれませんが、DirectX7 まではだいたい 1年に一回
こんな感じで大幅な刷新があったんですよね。

とりあえず D3D10_DRIVER_TYPE_HARDWARE でちゃんと高速に動作しました。

API セットは Fixedパイプが無くなってかなりすっきりしたはずなのですが、
その代わり汎用性が増して自由度があがったためか、インターフェースの種類も
かなり増えています。おかげで一見しただけだと全体の構造がわからなくなって
しまいました。
例えばテクスチャの読み込み1つ見てもやるべき手順が増えてます。

また従来は目的毎に API があったため何をやるのかは割と明確でした。今では
ライティングもマテリアルもフォグも何から何まで Shader の実装依存になった
ために専用の API や構造体は無く全部汎用です。

逆に Depth, Stencil あたりの判定の流れは変わっていないので、レガシーに
感じてしまいます。

設定やパラメータの渡し方も大幅に変更になっています。効率優先でできる限り
バッファに置く構造となっていて、非常に徹底したものです。
いまのビデオカードは RAM 容量もかなり多いので、これを活用する構造にシフト
したのでしょう。コマンドストリームに乗せるものは最小限です。

・マニュアルのミス?
 December でマニュアルの D3DX10CreateShaderResourceViewFromFile() の引数が
 足りないようです。
 実際の定義では D3DX10_IMAGE_LOAD_INFO と ID3DX10ThreadPump* の2つが追加
 されています。

 チュートリアルやプログラミングガイドでも、たまに関数名が間違ってることが
 あるようです。例えば

 DirectX Graphic
  Direct3D 10
   Programming Guide
    API Features
     Reference Counting
 の最後の pDevice->GetRasterrizerState() 等。

 もしかしたら設計の最後に、全部の API 名が RSGetState() のように RS~、PS~、
 OM~、と整理されたのかもしれません。こういうミスはその名残かも。

・その他気がついたこととか随時

HLSL は technique ではなく、technique10。間違えると signature 取れずにはまる。

D3D10 では Set 系で Reference Count が増えない。

Texture の管理に ResourceView を使った場合、開放の手順が多少複雑。
データの実体は ID3D10Texture2D なので、Resource の開放も必要。

PS3 Linux のお勧めディストリビューション

Playstation3 に Linux を入れる場合さまざまなディストリビューションがあります。
PS3 上で特に開発はしないけど、クライアントとして Linux を使ってみたい。
そういう用途には今のところ Debian がお勧めです。
デスクトップ上で、アプリケーションの起動や動作が一番軽くて比較的軽快に
動作します。PS3 で FC5 で何か重いなあと思っていた方は試してもいいかもしれません。
DistributionsGeneralFAQs

●Debian
ほげめも Debian Live for PS3
ほげめも Debian-Installer for PLAYSTATION 3
PS3 やっぱり Debian 再インストールメモ

良い点
 ・軽い
 ・本来のインストーラを使ってインストールできる。
 ・インストーラはTV画面でも問題無く実行できる。
 ・インストーラは日本語で説明が表示される。
 ・Live CD で試すことができる。
 ・パッケージが豊富なので、いろいろインストールしてかなり楽しめる。

悪い点
 ・インストーラを使ったインストール直後は Window が正常に表示されないので、
  最初に xorg.conf を書き換える必要がある。
 ・インストール時にネットワーク接続が必要。
 ・Cell SDK 系が動作しない。(ライブラリバージョンが異なるため)

Cell を使った開発を行う場合は今のところ YDL か FC の2択でしょうか。

●Fedora Core 5
Fixstars PS3 Linuxのインストール

良い点
 ・PS3 で動くように構成されているので専用のコマンドも最初から入る。
 ・すぐに X(ウィンドウ) も起動できる。
 ・ネットワークが無くても DVD から install できる。
 ・Full install ではほぼ全部パッケージが入るので、後からインストールしなくてもさまざまなアプリケーションを使うことができる。
 ・Cell SDK 等の開発環境がそのまま入る。

悪い点
 ・ウィンドウはかなり重い。
 ・特殊なインストーラを使うので少々不親切。
 ・インストール時に Full か Minimum の選択しかできない。
 ・Full だと 9GB 必要。

YDL はあまり使い込んでいないので詳しく書けないのですが、FC5 よりは軽いです。
特にこだわりが無くて Cell SDK 中心で使う場合は YDL は良い選択だと思います。

●Yellow Dog Linux 5.0
Terra Soft Yellow Dog Linux v5.0
Terra Soft Yellow Dog Linux v5.0 (日本語版 Amulet)
Fixstars Yellow Dog Linux for PS3

・軽い
・PS3 専用なので安心。インストール後すぐ使えるし専用コマンドも入っている。
・市販パッケージにサポートあり。日本語版もある。
・インストーラは GUI でわかりやすいけど HD 対応モニタが必要。
・独特なデスクトップ環境。
・Cell SDK 等そのまま使える。

ちなみに Ubuntu は FC5 のカーネルをそのまま流用したためかどうかわかりませ
んが、挙動時の体感的な速度は FC5 とほぼ同じ印象でした。
カーネルの config と、使用されているライブラリやパッケージのバージョンによる
使用するメモリの消費量などが重さの差につながっているのでしょうか。
この辺は未検証で申し訳ないです。

ポラール m62 電池交換

ポラールの心拍計 m62 の電池交換をしてみました。
本当はメーカーに送って交換してもらわなければいけないのだけど。
参考にしたのはこちらのページです。
ポラール心拍計バラバラ写真

裏蓋は小さいプラスのねじなのでドライバーで簡単に開けられます。
開けてみたら使われていたのは普通の CR2032。
全く同じ電池が手持ちのストックにあったのでそのまま交換してみました。

裏蓋は開いてもそこからすぐ電池交換できるわけではなく、
さらに内部のモジュールを取り出して分解する必要がありました。
これがはめ込みの構造がわかるまではなかなか取れません。
非常に細かい作業で外れやすい小さいパーツもあるので注意です。
最初は写真を撮りつつ作業をした方が良いかもしれません。
圧電ブザー用の接点金具と、
フロントボタンのスイッチ部分の基板のかみ合わせに注意です。

何とか元に戻って動き出しましたが、構造がわかるまでは結構苦労したし時間も
かかりました。一度経験したら2度目以降はたぶん大丈夫です。
でもやっぱりメーカーにやってもらった方が楽でしょう。
もし試す場合は自己責任で。

PS3 Linux、Ubuntu をinstallしてみた

こちらのページを参考にして、Playstation3 に Ubuntu をインストールしてみました。
http://www.louiscandell.com/ps3/
http://ubuntuforums.org/showthread.php?t=316047
とりあえず別の OS からでもインストール先 HDD にアクセスできる状態になって
いれば、基本的に debootstrap してカーネルをコピーするだけのようです。

●やることの整理

・すでに本体 HDD (/dev/sda) に FC5 が install 済みの状態を前提にしています。
・USB の外付け HDD に Ubuntu を install します。

●install するパーティションの作成と準備

今回は外付け HDD のうち2つめのパーティションに install します。
なので以下 /dev/sdf2 として説明しています。
1つ目のパーティションなら /dev/sdf1 になるし、20GB モデルなら /dev/sdc1 と
なります。

 # fdisk /dev/sdf

fdisk でよく使うコマンド
 ・p 現在の状態の確認
 ・d パーティション削除
 ・n 新規パーティション追加
 ・t パーティションのタイプ設定、デフォルトだと Linux 用になる
 ・q 中断終了。設定を反映しないで fdisk 実行前の状態に戻ります。
 ・w 書き込み終了。設定変更を書き込んで終了します。元に戻りません。

これで /dev/sdf2 を確保しました。
ext3 でフォーマットします。

 # /sbin/mkfs.ext3 /dev/sdf2

ボリュームラベルを /5 にしておきます。(本当は mkfs.ext3 -L で一緒に登録できる)

 # /sbin/e2label /dev/sdf2 /5

swap は sda の既存のものを流用するので今回は作成しませんが、もし作成するなら
こんな感じです。

 # /sbin/mkswap -L SWAP2 /dev/sdf?

●debootstrap コマンドの準備

ここは参考ページの手順そのままです。FC5 に debootstrap というコマンドを
インストールしています。

 # cd /tmp
 # wget http://louiscandell.com/ps3/debootstrap/debootstrap_0.3.3.0ubuntu7_all.deb
 # ar -xf debootstrap_0.3.30ubuntu7_all.deb
 # cd /
 # zcat < /tmp/data.tar.gz | tar xv
●debootstrap コマンドの実行

install 先を mount します。

 # mkdir /mnt/ubuntu
 # mount /dev/sdf2 /mnt/ubuntu

debootstrap を実行します。
内部で呼び出すコマンドのために、先に PATH の追加が必要です。

 # export PATH=”$PATH:/sbin:/usr/sbin”
 # debootstrap –arch powerpc edgy /mnt/ubuntu http://archive.ubuntulinux.org/ubuntu

しばらく待ちます。

●カーネルのコピー

FC5 のイメージをそのまま使います。

 # cd /mnt/ubuntu/boot
 # cp /boot/* .
 # cd /mnt/ubuntu/lib
 # cp -r /lib/modules .

●fstab の作成

これも FC5 の設定をそのまま流用します。

 # cp /etc/fstab /mnt/ubuntu/etc/
 # vi /mnt/ubuntu/etc/fstab

LABEL=/5 / ext3 defaults 1 1
/dev/devpts /dev/pts devpts gid=5,mode=620 0 0
/dev/shm /dev/shm tmpfs defaults 0 0
none /spu spufs defaults 0 0
/dev/proc /proc proc defaults 0 0
/dev/sys /sys sysfs defaults 0 0
LABEL=SWAP swap swap defaults 0 0
/dev/cdrom /mnt/cdrom auto noauto 0 0

1行目の「LABEL=/」を「LABEL=/5」に変更するだけです。FC5 用の swap 領域に
SWAP というラベルがついてるので swap はそのまま使います。

● hosts の作成

FC5 のものをコピーするだけです。

 # cp /etc/hosts /mnt/ubuntu/etc/

● kboot.conf の作成

今までの sda1 の kboot.conf に追加します。

 # vi /etc/kboot.conf

~省略、以下追加分だけ (PS3 Linux の現在の設定メモ)

# Ubuntu (sdf2) LABEL=/5
ubuntu=’/dev/sdf2:/boot/vmlinux-2.6.16 initrd=/dev/sdf2:/boot/initrd.img root=LABEL=/5′
ubuntu480i=”$ubuntu video=ps3fb:mode:1″
ubuntu480if=”$ubuntu video=ps3fb:mode:129″
ubuntu720p=”$ubuntu video=ps3fb:mode:3″
ubuntu720pf=”$ubuntu video=ps3fb:mode:131″
ubuntu1080i=”$ubuntu video=ps3fb:mode:4″
ubuntu1080p=”$ubuntu video=ps3fb:mode:5″
ubuntu1080pf=”$ubuntu video=ps3fb:mode:133″

これで起動時に kboot: で ubuntu と入力できるようになります。

●起動

再起動して kboot: のプロンプトが出たら ubuntu (または ubuntu720p 等) と
入力して起動してみます。(起動中になぜか console のフォントが変わる)

login: プロンプト と init メッセージが重なって起動失敗に見えることがあるので、
画面がとまったらとりあえず [Enter] 。
login: が出たら root で入ります。パスワードが無いので先に設定しておきます。

 # passwd

dhclient でネットにつないで apt-get のテストです。

 # ifconfig lo up
 # dhclient
 # apt-get update

うまくいったら後はパッケージを install したり環境設定などを行います。

●設定など

ssh を入れておきます。これで PC 経由で設定できるようになります。

 # apt-get install openssh-server

desktop 環境の install。かなり時間がかかります。

 # apt-get install ubuntu-desktop

なぜかエラー終了しました。それでも一応 xorg.conf を書き換えます。

 # vi /etc/X11/xorg.conf

最初から Driver は fbdev だったので、変更は2箇所だけでした。

・Sction “Screen” に追加

  DefaultFbBpp 32

・Section “Device” に追加

  Driver “fbdev”
  Option “ShadowFB” “false”

root だと gdm に怒られるので一般ユーザーを追加します。
(ここでは名前を wheel としています)

 # adduser wheel

sudoers にも追加します。「wheel ALL=(ALL) ALL」を追加

 # visudo

gdm を起動します。

 # /etc/init.d/gdm start

ログインできました。設定ツールなど起動できずにおかしなところがあるので、
まだまだ設定が必要なようです。
やっと何とか動いた、といった程度です。