2007/06/05 火

PS3のコントローラー「SIXAXIS」をMacにUSB接続する

PS3購入後の最初のエントリーがこれなのもどうかと思うのですが、PS3のコントローラー「SIXAXIS」をMacにUSB接続するコマンドを作りました。PS3発売直後に「SIXAXISをWindowsPCでつかう」というWindows向けのコマンドが出ていたのですが、それのMac版+αです。USBドライバではありません。SIXAXISに「USBモードで動け」という命令を出すツールです。ソース付。

■ 必要なモノ

  • PowerPC Mac または Intel Mac
  • Mac OS X 10.3 以上(たぶん…)
  • SIXAXIS と USBケーブル(Aオス - miniBオス タイプ)

PS3を持っている方は気にしなくていいですが、SIXAXIS単品でチャレンジしようと思っている方は、なんでもいいので「Aオス - miniBオス」タイプのUSBケーブルを用意してください。Mac OS Xのバージョンは全然検証していませんが、新しい機能は使っていないので大丈夫だと思います、たぶん…。

ワイヤレスコントローラ(SIXAXIS) USBケーブルポータブル ストレートタイプ


■ 使い方

  1. sixaxis-usb.tgz をダウンロードして適当なフォルダに解凍する
  2. ターミナルを起動してそのディレクトリに移動する
  3. sixaxis コマンドをオプションなしで実行する
    $ ./sixaxis-usb 
    SIXAXIS[1]
    set usb-mode
  4. ゲームコントローラーが使えるゲームなどを起動する
  5. SIXAXISのボタンや十字キー、アナログスティックを押しても反応がない場合は「PSボタン」を押す

以上の操作で、SIXAXISが2つのアナログ入力と19個のボタンを持つUSBゲームコントローラーに変身します。ボタンアサインは省略しますが、十字キーがボタン扱いとなり、アナログスティック左が方向キー(X軸とY軸)、アナログスティック右がZ軸とZ軸回転になる点に注意してください。6軸検出システムやボタンのアナログ入力は使うことができません (データ上はきているようです)。

十字キーがXY軸にならないため、それに対応していないゲームは動きません。とりあえず MacMAME はボタンアサインを変更すればちゃんと遊べました。振動機能がなくなったおかげで DUALSHOCK 2 より軽くなって、かなりいい感じです、これ。6軸検出システムやBluetoothが使えるようになれば最強コントローラーかも…。SCE公式でドライバ出してくれないかしら。

→ 【追記】 これのUSBドライバ版を作っている人を発見しました。以前Xbox360のドライバを作っていた人で、「Tattiebogle.net - Ps3Controller」からSIXAXIS用のドライバをダウンロードできます。キーコンフィグとかはありませんが、挿しただけで自動認識です。ソースが非公開なのが残念!

■ オマケ情報

SIXAXISとPS3の通信内容とか現在判明しているUSBやBluetoothのコマンドとかの情報は、あとで書こうと思います。hack情報を集めるのに以下のサイトがすごく役に立ちました。

最初はUSB制御の勉強もかねて、libusb 0.1.12を使って冒頭の「SIXAXISをWindowsPCでつかう」と同じ動作と思われるモノを作っていたのですが、結局Mac標準の CoreFoundation と IOKit で作り直しました。「CatHand Development [USB機器の制御]」というページを参考に、Xcodeについてきた「USBSimple Example」から必要 (そう) な部分だけをコピペして作りました。USB制御学習のとっかりとしていいかも知れません。

libusb版のほうはソースだけをこちらに置いておきますので、よかったら参考にしてください。これだったらMacじゃない他のOSでもほぼ動くと思います。

あと、sixaxis-init を使った後にMacからSIXAXISを抜くと、PS3との通信が始まって電源が入ってしまったりする場合は、こっそり導入してある「登録Bluetoothアドレス読み書き機能」を使ってみてください。下記のように適当なアドレスを設定してやることで、PS3とのペアリング情報を変更することができます。自分のMacのBluetoothアドレスにするとちょっと面白いですよ(^^

$ ./sixaxis-usb -b 00-11-22-aa-bb-cc
SIXAXIS[1]
current bluetooth address: 00-13-a8-ef-8a-ff
set bluetooth address:     00-11-22-aa-bb-cc

このように、SIXAXISはUSBとBluetoothの両刀使いに加えペアリング方法がPS3独特の方法なため、普通にPCに接続できないんですよねぇ。今回のツールで一歩踏み出したので、Bluetooth接続やドライバ作成などもできればなぁ、と思っています。が、なんせド素人なため、「このプログラム間違ってるよ」とか「オレがドライバ書いてやる」とかいう方がいたらぜひお願いします!

Posted by ooba at 03:13 | Comments (3) | TrackBacks (0) | このエントリーを含むはてなブックマーク
Trackbacks
TrackBack URL: http://www.bricklife.com/mt/mt-tb.cgi/531
Comments
1 : name: まみくん date: 2007/08/16 18:02 [RES]

おもいっきり他力本願ですが、ぜひBluetooth接続にチャレンジして欲しいです!

Bluetooth接続が出来るようになれば、iMacでPS3のコントローラーをスマートに使えるんですよねぇ。

そうなれば、ここにアクセスが殺到するような(笑)

2 : name: uriko Author Profile Page date: 2009/04/14 10:22 [RES]

すみません、通りがかりのものです。

今、MacのUSB制御について勉強中でこのサイトにたどりつきました。
で、先日MacBookを買ったのでつないでみたのですが、動きません。
ダウンロードして、解凍、ターミナルで ./sixaxis-usb と打ったのですが、何の表示も出ずにプロンプトに戻ってしまいました。

Xcodeでプロジェクトを作って試してみたところ、main()の中の
while (usbDeviceRef = IOIteratorNext(iterator)) {
に入らずに抜けちゃっています。
(その前のIOServiceGetMatchingServices関数の戻りは0でした)

ゲームを起動してからでないと認識されないのでしょうか?

3 : name: ooba date: 2009/05/15 10:37 [RES]

>>2 uriko さん
すみません、コメントの確認が遅くなりました。
その後、解決されましたでしょうか?

原因はちょっとわからないのですが、USB機器の認識とゲームの起動は関係ないと思います。
実は10.5では動作確認していないので、時間ができたらチェックしてみます。

Post a comment




Powered by Movable Type 4.0