玩轉樹莓派 支援PS3手柄

2021-09-21 00:07:15 字數 3534 閱讀 5628

之前寫過一篇用樹莓派玩模擬器的。通過retropie可以整合不同的模擬器,在樹莓派上玩街機、玩紅白機、玩psp都不是問題。

不過我不喜歡讓遊戲直接接管我的樹莓派,畢竟用樹莓派還得做正經事對吧。

還好retorpie提供on the top的使用方式,只不過是需要自行執行shell命令。這裡有指導:

可以直接通過github拉回來:

git clone --depth=1

修改執行許可權,然後執行設定指令碼

retropie官方支援ps3手柄的說明在這:

寫的很簡單,我拿到手柄照著說明,只要usb線一插上,手柄就震個不停……頓時有點絕望……

用dmesg命令看看,仿品是shan wan做的,必須是咱國內仿的,***。對於這個牌子的轉殖貨,老外用的也非常多,在github上都有專門的issue和解決……

問題是,沒解決我的問題…

再加上,使用ps3的藍芽驅動,就不能再使用藍芽滑鼠鍵盤啥的,很難以接受……難道要再搞乙個藍芽介面卡?那和使用xbox手柄有啥區別……

於是,我打算貼下心,研究使用補丁過的bluez驅動。好在有牛人把東西都折騰好了,我開始了新的冒險~

1、抓github上的打過補丁的bluez原始碼

git clone

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

實際只需要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 inte***ce 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吧~

玩轉樹莓派 前言

我是首先接觸的樹莓派然後再接觸的arduino和stm32,也許是先入為主的緣故,我對樹莓派有著非常大的熱情與興趣,帶有linux作業系統 帶有豐富gpio介面 體形微小的pc電腦,簡直是我的最愛。它是一款帶有作業系統和儲存空間的pc電腦,程式設計者可以直接在linux作業系統上進行程式設計,大大簡...

玩轉樹莓派之零 了解樹莓派

最近買了一塊樹莓派板子,想學習樹莓派玩法,如果您也跟我有一樣想法,那麼我們一起來學習吧,需要什麼基礎呢 一,樹莓派是什麼?樹莓派是世界上最小的卡片式電腦,具備pc電腦的一切,系統直接裝在t卡上,非常方便。正所謂麻雀雖小,五臟俱全。在pc能做的都能在樹莓派上做。分為rpi zero rpi a rpi...

玩轉樹莓派 2 配置你的樹莓派

上一節中介紹了如何將樹莓派系統寫入樹莓派,今天再介紹一下如何配置樹莓派,讓其更好用。比較通用的ssh終端工具是securecrt,網上很多,我這裡用的是中文破解的,安裝之後開啟,新建連線,如圖 主機名就是樹莓派的ip位址,那在第一次啟動時又如何獲取ip位址呢,最簡單的辦法就是登入到連線同一區域網的路...