Ubuntu Weekly Recipe

第158回 UbuntuとXLinkでレッツ狩猟生活!

この記事を読むのに必要な時間:およそ 4.5 分

厳寒の頃,みなさん元気に狩猟していますか? 筆者も昨年末に発売されたプレイステーションポータブル(以下PSP)用ゲーム,モンスターハンターポータブル3(以下MHP3)をプレイする激務を連日こなしていたりします。

そこで今週のレシピは仲間といっしょにPSPで狩りに出かけるための必須ソフト,XLinkをUbuntu上で動かす方法を紹介します。

XLinkとは?

PSPは本体に無線LAN機能を搭載しており,ゲームによっては無線LANのアドホックモードを利用して協力/対戦プレイを行うことができます。アドホックモードは機器同士を直接接続する無線LANの動作方式注1ですので,ゲームを遊ぶためには「同一の場所にプレイする全員が集まる」必要があります。友達の家に集まって遊ぶような場合には問題ありませんが,やはり各人が自宅からインターネット越しに遊べたほうが便利です。そこで登場するのがXLinkです。XLinkは「インターネット越しにアドホック通信」を実現するためのサービスとソフトウェアで,Linux版も公開されています注2)⁠

XLinkを用いたアドホック通信のイメージ(XLinkサーバは図から省略)⁠本来PSP同士で行うアドホック通信を,PCとインターネットが中継する

XLinkを用いたアドホック通信のイメージ(XLinkサーバは図から省略)。本来PSP同士で行うアドホック通信を,PCとインターネットが中継する

注1)
これに対して,アクセスポイントを介して接続する形態をインフラストラクチャモードと呼称します。
注2)
XLinkの日本カスタム版が,PLANEXの運営するXLink Kaiになります。今回はPSPとMHP3で確認を行いましたが,もちろん他のゲームタイトルでも対戦プレイは可能です。またXLinkのサービス自体はPSP専用というわけではなく,PlayStation2やXbox360などにも対応しています。

無線LANアダプタを準備する

XLinkでゲームをプレイするためには,PSPとUbuntuをアドホック接続するための無線LANアダプタが必須です。つまりPCには,Ubuntu自身がインターネットに接続するためと,PSPを接続するための2つのネットワークアダプタが装着されている必要があります。

そして日本版カスタムであるXLink KaiのサーバをPLANEXが運営していることもあり,アドホック通信に使う無線LANアダプタにはPLANEX製のものが推奨されています。筆者はUbuntu 10.04.1上で,91回でも紹介されている,PLANEX GW-USMicroNを使用しました。おそらくRalinkのRT2870かRT3070を搭載したモデルであれば,本稿と同じ手順で接続が可能なのではないかと思います注3)⁠

注3)
なおRealtekのRTL8192CUを搭載したPLANEX製のGW-USNano2では,筆者が試した限りではうまく接続することができませんでした。

デバイスドライバのコンパイル

PLANEX GW-USMicroNをUbuntu 10.04.1に接続すると,/lib/modules/2.6.32-27-generic/kernel/drivers/staging/rt2870/rt2870sta.koがロードされ使用可能になります。しかしこのカーネルに含まれるドライバでは,XLinkへの接続がうまくいきません。そこで最新のドライバをコンパイルして導入します。まずRalinkのページからRT8070/RT3070/RT3370 USB用ドライバをダウンロードします。本稿執筆時点でのバージョンは2.5.0.1でした。

Ubuntu 10.04.1カーネルに含まれるドライバ情報

$ modinfo rt2870sta
filename:       /lib/modules/2.6.32-27-generic/kernel/drivers/staging/rt2870/rt2870sta.ko
alias:          rt3070sta
version:        2.0.1.0
license:        GPL
description:    RTxx70 Wireless LAN Linux Driver
(...略...)

ダウンロードしたファイルは2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.bz2というファイル名になりますが,実はファイルの拡張子が間違っています。正しくはtar.gzですので,リネームしてください。

ファイルのリネームと展開

$ mv 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.{bz2,gz}
$ tar zxvf 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.gz
$ cd 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO

アーカイブを展開したら,ソースに修正を加えます。まず,GW-USMicroNのVenderIDとProductIDを追記します。これらのIDはlsusbコマンドで調べることができ,GW-USMicroNの場合は,VenderID : 2019 ProductID : ed14 になります。common/rtusb_dev_id.cの65行目付近にPLANEX製デバイスのIDが記述されていますので,このあたりにGW-USMicroNのIDを追記しておくとよいでしょう。

デバイスのIDの確認とソースへの追記

$ lsusb
(...略...)
Bus 001 Device 003: ID 2019:ed14 PLANEX             ← VenderID : 2019 ProductID : ed14 になる

$ vi common/rtusb_dev_id.c
USB_DEVICE(0x2019,0xED14)}, /* Planex Communications, Inc. RT2870 */          ← ソースの65行目付近にこの一行を追記する

次にドライバのライセンス情報を追記します。以下のようにドライバモジュールに自身のライセンスを埋めこんでおかないと,ドライバのロード時に「module license 'unspecified' taints kernel.」というtaints kernelメッセージが表示されます。

$ vi os/linux/usb_main_dev.c 
MODULE_AUTHOR("Paul Lin <paul_lin@ralinktech.com>");
MODULE_DESCRIPTION("RT2870 Wireless Lan Linux Driver");
MODULE_LICENSE("GPL");                      ← この行を追加
#ifdef CONFIG_STA_SUPPORT

さらにconfig.mkとRT2870STA.datを書き換えて,XLinkを使用できるようにします。またHAS_WPA_SUPPLICANTとHAS_NATIVE_WPA_SUPPLICANT_SUPPORTをyにすることで,NetworkManagerからの操作が可能になります注4)⁠

ドライバのコンフィグと設定ファイルの編集

$ vi os/linux/config.mk 
# Support XLINK mode 
HAS_XLINK=y
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y
# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

$ vi RT2870STA.dat
PSP_XLINK_MODE=1

最後にMakefileを編集します。デフォルトのMakefileではルートディレクトリにtftpbootという名前でカーネルモジュールを作成しようとするため,make時にroot権限が必要になってしまいます。さらに言えば/tftpbootのようなファイルは必要ないため,387行目の該当部分をコメントアウトしておきます。

$ vi Makefile
#cp -f $(RT28xx_DIR)/os/linux/rt$(CHIPSET)sta.ko /tftpboot      ← この行をコメントアウト

上記すべてが完了したら,makeとinstallを行います。またカーネル標準のドライバが読み込まれないよう,あらかじめ退避しておきましょう。これで,GW-USMicroNの接続時に新しいrt3070staドライバのバージョン2.5.0.1がロードされるようになります。

stagingドライバの退避と新しいドライバのインストール

$ sudo mv /lib/modules/2.6.32-27-generic/kernel/drivers/staging/rt2870/rt2870sta.ko{,.bak}
$ make
$ sudo make install

ロードされたドライバの確認

$ modinfo rt3070sta
filename:       /lib/modules/2.6.32-27-generic/kernel/drivers/net/wireless/rt3070sta.ko
version:        2.5.0.1
license:        GPL
description:    RT2870 Wireless Lan Linux Driver
author:         Paul Lin <paul_lin@ralinktech.com>
(...略...)
注4)
ただし後述しますが,今回のPSPとのアドホック接続にはNetworkManagerは使用しません。

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。株式会社インフィニットループ所属。

コメント

コメントの記入