玩转树莓派——支持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
修改运行权限,然后运行设置脚本

    cd RetroPie-Setup
    chmod +x retropie_setup.sh
    sudo ./retropie_setup.sh
后续通过菜单来安装包、配置,并无二致。
前文书也写过,在树莓派上可以通过XBOX 360手柄收发器来使用XBOX手柄。可是树莓派自己有蓝牙啊,不能用蓝牙接手柄吗?
查了一下,PS3的手柄是蓝牙的。可是,Sony并未支持在蓝牙协议栈上使用PS3手柄……不过也不是没有办法,有很多牛人写了PC上的驱动,树莓派这种开源系统,自然更加不缺大神来研究。
于是,万能的淘宝买了个PS3手柄,才25元……嗯,我知道,仿品嘛,不确定是不是能用,搞了再说。

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吧~

时间: 2024-10-12 14:35:02

玩转树莓派——支持PS3手柄的相关文章

玩转树莓派——支持XBOX手柄

作为最早玩XBOX 360和Kinect的一批玩家,家里的XBOX已经很久没开过了.改过电源.刷过脉冲,现在又在琢磨在树莓派上折腾XBOX手柄了. 之前写过,用RetroPie作为平台运行游戏模拟器等,RetroPie支持驱动XBOX360的游戏控制器.不过,需要买一个XBOX360手柄的PC适配器.万能的淘宝有售.至于我呢,无比怀念之前有150刀购物券的MVP时代,因为那时我买了很多XBOX360周边配件~ 言归正传,首先在RetroPie-Setup脚本中,找到xboxdrv组件,安装并启用

【用PS3手柄在安卓设备上玩游戏系列】谈安卓游戏对手柄的支持

不同的游戏对于手柄的支持程度是不一样的,对应所需要进行的手柄设置也不尽相同.我没有这样的时间和精力,针对每一款游戏去写博客,但找出不同游戏中的共同点,针对同一类的游戏去写博客,应该是可行的.我把安卓上的游戏分成下面四种类型: 1.原生支持实体手柄的 安卓系统本身是支持实体手柄的.淘宝上面随便一搜"安卓手柄",就能找到各种外设厂商针对安卓系统定制的游戏手柄.游戏厂商跟外设厂商的支持总是相辅相成的,在游戏厂商的支持下,有些游戏是原生支持手柄的.这里的"原生"二字,强调的

【用PS3手柄在安卓设备上玩游戏系列】FC(任天堂NES/FC主机)模拟器

NESoid 是安卓系统下公认最好的FC模拟器.据我所知,现在安卓系统下面的绝大部分的FC模拟器,都是基于 NESoid 的内核来开发的. 官方网站:http://www.nesoid.com NESoid 是原生支持实体手柄的,下面以<超级魂斗罗>为例说明我的设置步骤: Step1:运行 SixaxisController(以下简称 SC),连接手柄和设备,我的设备是小米2: Step2:扩展菜单按钮 > 设置 > 手柄设置,勾选"启用手柄",然后选择&quo

使用PS3手柄连接安卓设备玩游戏

背景 在索尼公司的 PS3 游戏机里面,游戏手柄是通过蓝牙协议与游戏主机进行无线通信的,一个名为 Dancing Pixel 的开发商开发了一款名为 Sixaxis Controller 的安卓应用,实现了 PS3 手柄与安卓设备(安卓手机或者平板)的蓝牙连接,现在我们有机会直接使用 PS3 手柄在安卓设备上面玩游戏了. 硬件要求1:PS3 手柄 + 手柄配套的USB线 以下简称"手柄"和"USB线",如下图所示: 硬件要求2:已经获得 ROOT 权限并且支持蓝牙的

树莓派3 蓝牙连接 PS3手柄

网上没有直接用3蓝牙连接树莓派的教程,看到一篇用2b 和 蓝牙适配器一起用 连接PS3 手柄的,所以先安装一下试试. http://tieba.baidu.com/p/3237051512 下面就是安装必要的软件了:[email protected] ~ $ sudo apt-get install libusb-dev libbluetooth-dev 注:上面lib这个两个是必须装的,是为了后面编译要用到的 否则各种报错 可以在qtsixa官网下载 下载完毕后解压:[email protec

玩转树莓派&mdash;&mdash;游戏主机模拟器

树莓派的原生系统RaspBian内置了几个Python游戏,还有"我的世界",更重要的,还有帮助小朋友学习程序的应用. 到此为止了么?当然不.有很多人在树莓派上去开发游戏平台,将之前Linux下的开源模拟器移植到树莓派系统上.比较过两个不同的系统,个人感觉RetroPie更对我胃口. 官网:https://retropie.org.uk RetroPie很好的整理了各种模拟器,并且借助扩展实现了对XBOX手柄和PS3/PS4手柄等控制器的支持. System Emulator Rom

玩转树莓派&mdash;&mdash;安装系统

纠结了很久,终于在今年生日的时候买了个树莓派 3.拿到以后少不了各种折腾,慢慢的把折腾过程写下来吧. 有关RaspBerry Pi 3,技术参数以及对应提升,就没必要在这里赘述了,官网介绍应有尽有:https://www.raspberrypi.org/ 万能的淘宝买回一个电路板~没有选择所谓的套餐,那背离了我折腾的初衷.当然,考虑到折腾的程度,散热片和漂亮的框还是要搞一个的,电源可以用iPad的,全部到手也不到300元. 通电之前的第一件事是准备系统.有两种不同的方式来"安装"系统:

玩转树莓派&mdash;&mdash;安装 Windows 10 IoT Core

在树莓派上运行过Windows 3.1,自然也想运行Windows 10.于是准备在树莓派上安装一个Windows 10 IoT Core的系统. 写下这篇文字的时候,其实已经不是第一次安装运行Windows 10 IoT Core了.在我生日那天拿到树莓派之后,就立即尝试了一把Windows 10 IoT Core.当时正式的Pi 3的支持还没有发布,使用的是Windows Insider的版本.树莓派3和树莓派2最大的不同,是自带WiFi和蓝牙适配器.而当时Windows 10 IoT的版本

玩转树莓派&mdash;&mdash;管理 Windows IoT 设备

安装完树莓派只是第一步,要让Windows 10 IoT Core在树莓派上跑起来,管理系统等成套的工具必不可少. 由于Windows 10 IoT Core运行在卡片电脑上,没有设置太多的UI操作,很多操作都要通过IoT Dashboard应用和设备门户来进行.简单说说怎么管理树莓派上的Windows 10 IoT Core吧. 可以使用IoT Dashboard直接下载Windows 10 IoT的镜像进行安装,并且可以在安装时指定设备名.管理密码.wifi网络等信息. 运行在同一网络的Wi