玩转树莓派——支持PS3手柄
之前寫(xiě)過(guò)一篇用樹(shù)莓派玩模擬器的。通過(guò)retropie可以集成不同的模擬器,在樹(shù)莓派上玩街機(jī)、玩紅白機(jī)、玩PSP都不是問(wèn)題。
不過(guò)我不喜歡讓游戲直接接管我的樹(shù)莓派,畢竟用樹(shù)莓派還得做正經(jīng)事對(duì)吧。
還好retorpie提供on the top的使用方式,只不過(guò)是需要自行運(yùn)行Shell命令。這里有指導(dǎo):
https://github.com/retropie/retropie-setup/wiki/Manual-Installation
可以直接通過(guò)github拉回來(lái):
??? git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
修改運(yùn)行權(quán)限,然后運(yùn)行設(shè)置腳本
Retropie官方支持PS3手柄的說(shuō)明在這:
https://github.com/retropie/retropie-setup/wiki/Setting-up-a-PS3-controller
寫(xiě)的很簡(jiǎn)單,我拿到手柄照著說(shuō)明,只要USB線一插上,手柄就震個(gè)不停……頓時(shí)有點(diǎn)絕望……
用dmesg命令看看,仿品是SHAN WAN做的,必須是咱國(guó)內(nèi)仿的,你懂的。對(duì)于這個(gè)牌子的克隆貨,老外用的也非常多,在github上都有專(zhuān)門(mén)的issue和解決……
https://github.com/RetroPie/RetroPie-Setup/issues/1677
問(wèn)題是,沒(méi)解決我的問(wèn)題…
再加上,使用PS3的藍(lán)牙驅(qū)動(dòng),就不能再使用藍(lán)牙鼠標(biāo)鍵盤(pán)啥的,很難以接受……難道要再搞一個(gè)藍(lán)牙適配器?那和使用XBOX手柄有啥區(qū)別……
于是,我打算貼下心,研究使用補(bǔ)丁過(guò)的bluez驅(qū)動(dòng)。好在有牛人把東西都折騰好了,我開(kāi)始了新的冒險(xiǎn)~
?
1、抓github上的打過(guò)補(bǔ)丁的bluez源碼
git clone https://github.com/luetzel/bluez
2、配置檢查并編譯bluez驅(qū)動(dòng)
cd bluez
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc \ --localstatedir=/var --enable-sixaxis
make -j3
sudo make install
編譯時(shí)會(huì)需要依存庫(kù)或者包:
- GCC compiler
- GLib library
- D-Bus library
- udev library (optional)
- readline (command line clients)
我卡在最后一個(gè)包,猜了半天庫(kù)名字,最后發(fā)現(xiàn)是libreadline-dev。如果缺少包,直接sudo apt-get install即可。其實(shí)在Linux上編譯bluez來(lái)支持藍(lán)牙的文章也不少,可以參考下。
搞定后用命令:
sudo service bluetooth status
可以查看藍(lán)牙協(xié)議棧版本和daemon運(yùn)行進(jìn)程。我第一次沒(méi)成功,是通過(guò)藍(lán)牙版本發(fā)現(xiàn)的。
3、重啟藍(lán)牙服務(wù)
這步留到后面藍(lán)牙配對(duì)之前也沒(méi)啥問(wèn)題。更新藍(lán)牙堆棧之后,可以更新一下daemon。然后重啟一下藍(lán)牙服務(wù)。當(dāng)然,你愿意重啟樹(shù)莓派我也沒(méi)意見(jiàn)。
sudo systemctl daemon-reload
sudo service bluetooth restart?
4、從http://qtsixa.sourceforge.net/下載QtSixA源碼并編譯
實(shí)際只需要utils目錄
make
然后找到sixpair,可以把它復(fù)制到bluez或者你常用目錄下面。
將PS3手柄連接到USB線上,插入樹(shù)莓派,手柄會(huì)抽筋一樣不停地震。這也是我最早懷疑手柄是否能工作的原因。不管它,使用sixpair進(jìn)行配對(duì):
sudo ./sixpair
5、復(fù)制固件
因?yàn)橹匦戮幾g安裝了藍(lán)牙驅(qū)動(dòng)棧,需要把bcm的固件復(fù)制一下:
sudo ln -s /lib/firmware/ /etc/firmware
否則,使用sixpair顯示的藍(lán)牙地址不對(duì),變成全是a。
Current Bluetooth master: aa:aa:aa:aa:aa:aa
Setting master bd_addr to aa:aa:aa:aa:aa:aa
正常的應(yīng)該類(lèi)似以下:
Current Bluetooth master: b8:27:eb:e5:2f:e1
Setting master bd_addr to b8:27:eb:e5:2f:e1
6、拔出USB線,手柄會(huì)自己連接藍(lán)牙,當(dāng)只剩下一個(gè)LED的時(shí)候,手柄就配對(duì)成功了。
可以使用藍(lán)牙控制應(yīng)用看藍(lán)牙連接情況
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
顯示為T(mén)rusted,并且Connected,已經(jīng)分配了UUID,就意味著手柄已經(jīng)配對(duì)成功了。
?
還可以使用hciconfig來(lái)觀察HCI掃描和配對(duì)的過(guò)程。在dmesg里面也能看到設(shè)備從USB轉(zhuǎn)到了bluetooth/hci0上。如果什么也沒(méi)發(fā)生,可以嘗試增加檢測(cè):
sudo modprobe joydev
sudo modprobe uinput
?
整個(gè)過(guò)程痛苦不堪,我看了200多條英文的帖子,還不算基于這些帖子來(lái)做的搜索和查詢。現(xiàn)在,拿起你的PS3手柄,在樹(shù)莓派上玩DOOM吧~
轉(zhuǎn)載于:https://blog.51cto.com/haohu/1871516
總結(jié)
以上是生活随笔為你收集整理的玩转树莓派——支持PS3手柄的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2021全国省市区行政区划数据接口
- 下一篇: 高校软件测试实验室建设误区