標籤:style blog tar http width c
背景
在索尼公司的 PS3 遊戲機裡面,遊戲手柄是通過藍芽協議與遊戲主機進行無線通訊的,一個名為 Dancing Pixel 的開發商開發了一款名為 Sixaxis Controller 的安卓應用,實現了 PS3 手柄與安卓裝置(安卓手機或者平板)的藍芽串連,現在我們有機會直接使用 PS3 手柄在安卓裝置上面玩遊戲了。
硬體要求1:PS3 手柄 + 手柄配套的USB線
以下簡稱“手柄”和“USB線”,如所示:
硬體要求2:已經獲得 ROOT 許可權並且支援藍芽的安卓裝置
以下簡稱“裝置”。實踐證明,原裝手柄肯定是可以串連裝置的,而組裝手柄則有的可以有的不可以,有意入手組裝手柄的同學注意事先跟賣家確認清楚。至於裝置的類型則沒有限制,手機平板皆可。
經過本人實測,小米2和三星Galaxy Note 10.1都是支援與PS3手柄串連的。
軟體要求1:Sixaxis Compatibility Checker
以下簡稱 SCC。俗話說“不是所有特侖蘇都是牛奶”,同樣道理,不是所有裝置都能和手柄串連,於是就有了這款用來檢測裝置是否支援手柄的應用。
SCC 在Google官方的 Play 商店上就有得下載,小夥伴們趕緊先檢測一下自己的裝置是否支援這一令人興奮功能吧:
安裝完畢之後,先開啟裝置的藍芽,然後在 SCC 裡面點“Start”啟動裝置檢測:
靜待片刻,檢測通過的裝置會看到以下的提示:Your device appears to be supported……此處省略好些字。
SCC 裡面的“Pair Controller”是給支援 OTG 的裝置用的,在本文的下一節中會加以說明。
對於未能通過檢測的裝置,本文接下來的內容可能就暫時與你無關了。不過話說回來,裝置未能通過檢測又分為硬體原因和軟體(系統)原因,前者是由於裝置硬體本身就不支援,我們暫時是無能為力的,而後者則是可以通過刷機或者升級系統解決,比如我手上的小米2在2013年中做過一次系統升級之後,每次啟動 SCC 檢測都會提示 Permission denied,後來經過確認是由於此版本的 MIUI,在授權管理模組有 Bug,會導致所有應用都無法獲獲得 ROOT 許可權,需要等到下一次系統更新時來修複,果然再次進行系統更新之後,問題解決,整個世界又清靜了。所以建議各位未能通過檢測的小夥伴們,可以通過互連網,搜尋一下同款裝置有沒有串連成功的案例,進一步尋求解決的方法。
PS3 手柄和裝置串連配對的原理分析
藍牙裝置通訊的時候,是根據對方(目標裝置)的藍芽地址來進行定位的。這就是傳說中的“你知道我的長短,我也知道你的深淺”,這一點 PS3 手柄也不例外。但一般的藍牙裝置都具有“被發現”的特性,以藍芽音箱為例,就是開啟音箱以後,其他裝置可以通過搜尋來定位到藍芽音箱,然後進行串連。但 PS3 手柄卻不支援這種特性,實際上 PS3 手柄第一次和 PS3 主機配對的時候,也是需要用 USB 線才能完成的。大致的流程我推測是這樣:
流程中的“(4)重新整理手柄晶片上的目標裝置地址”是最關鍵的,要實現手柄和裝置的串連配對,就要想辦法把裝置的藍芽地址儲存到手柄晶片上。
對於支援 OTG 的裝置(比如小米2),只要用 USB 線把手柄和裝置串連好,再點一下 SCC 裡面的“Pair Controller”,就能搞定:
裝置不支援 OTG,或者手上沒有 OTG 連接線的小夥伴們也不用擔心,用 USB 線串連手柄和電腦,通過下面介紹的這個軟體一樣能搞定。
軟體要求2:Sixaxis Pair Tool
以下簡稱“SPT”。SPT 是一個電腦上的軟體,手柄第一次和裝置配對的時候,可以用 SPT 把裝置的藍芽地址儲存到手柄的晶片上。具體步驟如下:
1. 在電腦上下載和安裝“SixaxisPairToolSetup”,百度一下,你就知道,SPT 運行之後是這個樣子的:
2. 用 USB 線串連手柄和電腦,待驅動安裝完畢,SPT 識別出手柄之後,能夠在 Current Master 後面看到當前手柄晶片上的目標裝置地址。原來的目標裝置地址是多少我們不需要關心,在 Change Master 後面填好我們要串連的裝置的藍芽地址,點“Update ”。查看裝置藍芽地址的方法多了去了,這裡不一一列舉,在上文提到的 SCC 裡面也能看到:
3. 稍等片刻,如果 Current Master 後面的地址變成了我們在 Change Master 填寫的那個,說明手柄晶片上的目標裝置地址已被更改,接下來就可以拔掉 USB 線,開始進行手柄和裝置的藍芽串連了。
前文提到的某些山寨手柄無法串連裝置,問題就出在這裡,無法通過以上的手段更改手柄晶片上的目標裝置地址,我手上就有這麼一個奇葩的組裝手柄。但這並不意味著我就完全沒有辦法用這樣的手柄在裝置上面玩遊戲了,這事還是要看人品的,比如我發現用 OTG 串連手柄和小米2之後,通過這種“有線串連”的方式,配合接下來還是能夠實現
雖然完全沒有辦法用在裝置如果遇到SCC檢測通過,而SC無法串連手柄,可以重啟一下裝置,再重新運行SC進行串連。