玩转树莓派——支持PS3手柄
之前寫過一篇用樹莓派玩模擬器的。通過retropie可以集成不同的模擬器,在樹莓派上玩街機、玩紅白機、玩PSP都不是問題。
不過我不喜歡讓游戲直接接管我的樹莓派,畢竟用樹莓派還得做正經事對吧。
還好retorpie提供on the top的使用方式,只不過是需要自行運行Shell命令。這里有指導:
https://github.com/retropie/retropie-setup/wiki/Manual-Installation
可以直接通過github拉回來:
??? git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
修改運行權限,然后運行設置腳本
Retropie官方支持PS3手柄的說明在這:
https://github.com/retropie/retropie-setup/wiki/Setting-up-a-PS3-controller
寫的很簡單,我拿到手柄照著說明,只要USB線一插上,手柄就震個不停……頓時有點絕望……
用dmesg命令看看,仿品是SHAN WAN做的,必須是咱國內仿的,你懂的。對于這個牌子的克隆貨,老外用的也非常多,在github上都有專門的issue和解決……
https://github.com/RetroPie/RetroPie-Setup/issues/1677
問題是,沒解決我的問題…
再加上,使用PS3的藍牙驅動,就不能再使用藍牙鼠標鍵盤啥的,很難以接受……難道要再搞一個藍牙適配器?那和使用XBOX手柄有啥區別……
于是,我打算貼下心,研究使用補丁過的bluez驅動。好在有牛人把東西都折騰好了,我開始了新的冒險~
?
1、抓github上的打過補丁的bluez源碼
git clone https://github.com/luetzel/bluez
2、配置檢查并編譯bluez驅動
cd bluez
./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。然后重啟一下藍牙服務。當然,你愿意重啟樹莓派我也沒意見。
sudo systemctl daemon-reload
sudo service bluetooth restart?
4、從http://qtsixa.sourceforge.net/下載QtSixA源碼并編譯
實際只需要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吧~
轉載于:https://blog.51cto.com/haohu/1871516
總結
以上是生活随笔為你收集整理的玩转树莓派——支持PS3手柄的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021全国省市区行政区划数据接口
- 下一篇: linux 更改cpu信息,奸商要疯狂,