之前寫過一篇用樹莓派玩模拟器的。通過retropie可以內建不同的模拟器,在樹莓派上玩街機、玩紅白機、玩PSP都不是問題。
不過我不喜歡讓遊戲直接接管我的樹莓派,畢竟用樹莓派還得做正經事對吧。
還好retorpie提供on the top的使用方式,隻不過是需要自行運作Shell指令。這裡有指導:
<a href="https://github.com/retropie/retropie-setup/wiki/Manual-Installation">https://github.com/retropie/retropie-setup/wiki/Manual-Installation</a>
可以直接通過github拉回來:
<code> git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git </code>修改運作權限,然後運作設定腳本
<a href="http://s3.51cto.com/wyfs02/M02/8A/08/wKiom1gkLS2BP1J7AAE_LAawu_U242.jpg"></a>
Retropie官方支援PS3搖桿的說明在這:
<a href="https://github.com/retropie/retropie-setup/wiki/Setting-up-a-PS3-controller">https://github.com/retropie/retropie-setup/wiki/Setting-up-a-PS3-controller</a>
寫的很簡單,我拿到搖桿照着說明,隻要USB線一插上,搖桿就震個不停……頓時有點絕望……
用dmesg指令看看,仿品是SHAN WAN做的,必須是咱國内仿的,你懂的。對于這個牌子的克隆貨,老外用的也非常多,在github上都有專門的issue和解決……
<a href="https://github.com/RetroPie/RetroPie-Setup/issues/1677">https://github.com/RetroPie/RetroPie-Setup/issues/1677</a>
問題是,沒解決我的問題…
再加上,使用PS3的藍牙驅動,就不能再使用藍牙滑鼠鍵盤啥的,很難以接受……難道要再搞一個藍牙擴充卡?那和使用XBOX搖桿有啥差別……
于是,我打算貼下心,研究使用更新檔過的bluez驅動。好在有牛人把東西都折騰好了,我開始了新的冒險~
1、抓github上的打過更新檔的bluez源碼
<code>2、配置檢查并編譯bluez驅動</code>
<code>cd bluez</code>
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc \ --localstatedir=/var --enable-sixaxis
make -j3
sudo make install
編譯時會需要依存庫或者包:
- GCC compiler
- GLib library
- D-Bus library
- udev library (optional)
- readline (command line clients)
我卡在最後一個包,猜了半天庫名字,最後發現是libreadline-dev。如果缺少包,直接sudo apt-get install即可。其實在Linux上編譯bluez來支援藍牙的文章也不少,可以參考下。
搞定後用指令:
sudo service bluetooth status
可以檢視藍牙協定棧版本和daemon運作程序。我第一次沒成功,是通過藍牙版本發現的。
3、重新開機藍牙服務
這步留到後面藍牙配對之前也沒啥問題。更新藍牙堆棧之後,可以更新一下daemon。然後重新開機一下藍牙服務。當然,你願意重新開機樹莓派我也沒意見。
<code>sudo systemctl daemon-reload</code>
<code>sudo service bluetooth restart</code><code> </code>
實際隻需要utils目錄
make
然後找到sixpair,可以把它複制到bluez或者你常用目錄下面。
将PS3搖桿連接配接到USB線上,插入樹莓派,搖桿會抽筋一樣不停地震。這也是我最早懷疑搖桿是否能工作的原因。不管它,使用sixpair進行配對:
sudo ./sixpair
5、複制固件
因為重新編譯安裝了藍牙驅動棧,需要把bcm的固件複制一下:
sudo ln -s /lib/firmware/ /etc/firmware
否則,使用sixpair顯示的藍牙位址不對,變成全是a。
Current Bluetooth master: aa:aa:aa:aa:aa:aa
Setting master bd_addr to aa:aa:aa:aa:aa:aa
正常的應該類似以下:
Current Bluetooth master: b8:27:eb:e5:2f:e1
Setting master bd_addr to b8:27:eb:e5:2f:e1
6、拔出USB線,搖桿會自己連接配接藍牙,當隻剩下一個LED的時候,搖桿就配對成功了。
可以使用藍牙控制應用看藍牙連接配接情況
sudo bluetoothctl
[NEW] Controller b8:27:eb:e5:2f:e1raspi5 [default]
[NEW] Device 01:B6:AD:7F:63:25 PLAYSTATION(R)3 Controller
[NEW] Device 20:73:AB:91:DD:6F Bluetooth V3.0 Keyboard
[CHG] Device 01:B6:52:85:63:25 Connected: yes
[PLAYSTATION(R)3 Controller]# info 01:B6:AD:7F:63:25
Device 01:B6:52:85:63:25
Name: PLAYSTATION(R)3 Controller
Alias: PLAYSTATION(R)3 Controller
Class: 0x000540
Icon: input-keyboard
Paired: no
Trusted: yes
Blocked: no
Connected: yes
LegacyPairing: no
UUID: Human Interface Device... (00001124-0000-1000-8000-00805f9b34fb)
Modalias: usb:v054Cp0268d0000
顯示為Trusted,并且Connected,已經配置設定了UUID,就意味着搖桿已經配對成功了。
還可以使用hciconfig來觀察HCI掃描和配對的過程。在dmesg裡面也能看到裝置從USB轉到了bluetooth/hci0上。如果什麼也沒發生,可以嘗試增加檢測:
sudo modprobe joydev
sudo modprobe uinput
整個過程痛苦不堪,我看了200多條英文的文章,還不算基于這些文章來做的搜尋和查詢。現在,拿起你的PS3搖桿,在樹莓派上玩DOOM吧~
本文轉自HaoHu 51CTO部落格,原文連結:http://blog.51cto.com/haohu/1871516,如需轉載請自行聯系原作者