树莓派3 蓝牙连接 PS3手柄

网上没有直接用3蓝牙连接树莓派的教程,看到一篇用2b 和 蓝牙适配器一起用 连接PS3 手柄的,所以先安装一下试试。

http://tieba.baidu.com/p/3237051512

下面就是安装必要的软件了:
[email protected] ~ $ sudo apt-get install libusb-dev libbluetooth-dev

注:上面lib这个两个是必须装的,是为了后面编译要用到的 否则各种报错

可以在qtsixa官网下载

下载完毕后解压:
[email protected] ~/tools/sixa $ tar -xvf QtSixA-src.tar.gz

进入解压文件夹:
[email protected] ~/tools/sixa $ cd QtSixA-1.5.1/

我们先编译配对工具:
[email protected] ~/tools/sixa/QtSixA-1.5.1 $ cd utils/

打开“Makefile”, 把“WANT_JACK = True” 改为 “WANT_JACK = false”。

输入“make”编译工具:
[email protected] ~/tools/sixa/QtSixA-1.5.1/utils $ make
mkdir -p bins
cc -O2 -Wall -Wl,-Bsymbolic-functions hidraw-dump.c -o bins/hidraw-dump
cc -O2 -Wall -Wl,-Bsymbolic-functions sixpair.c -o bins/sixpair `pkg-config --cflags --libs libusb`
cc -O2 -Wall -Wl,-Bsymbolic-functions sixpair_kbd.c -o bins/sixpair-kbd `pkg-config --cflags --libs libusb`

编译完后, 你可以在“./bins” 文件家里看到这些文件:
[email protected] ~/tools/sixa/QtSixA-1.5.1/utils $ ls bins
hidraw-dump sixad-jack sixpair sixpair-kbd

下面进行配对,将手柄用数据线接入树莓派。 按下“ps”按键。

运行“./bins/sixpair”。成功你会看到以下类似信息, 然后可以拔出你的手柄了:
[email protected] ~/tools/sixa/QtSixA-1.5.1/utils $ sudo ./bins/sixpair
Current Bluetooth master: xx:xx:xx:xx:xx:xx
Setting master bd_addr to: xx:xx:xx:xx:xx:xx

然后我们进入”../sixad/“, 编译“sixad“:
[email protected] ~/tools/sixa/QtSixA-1.5.1/utils $ cd ../sixad/

编译并安装”sixad“:
[email protected] ~/tools/sixa/QtSixA-1.5.1/sixad $ make

如果你的树莓派版本比较新,gcc版本大于等于4.7以上的,make会报错

mkdir -p bins
g++ -O2 -Wall -Wl,-Bsymbolic-functions sixad-bin.cpp bluetooth.cpp shared.cpp textfile.cpp -o bins/sixad-bin `pkg-config --cflags --libs bluez` -lpthread -fpermissive
sixad-bin.cpp: In function ‘int main(int, char**)’:
sixad-bin.cpp:84:20: warning: taking address of temporary [-fpermissive]
sixad-bin.cpp:89:18: error: ‘close’ was not declared in this scope
sixad-bin.cpp:100:20: error: ‘sleep’ was not declared in this scope
sixad-bin.cpp:109:22: error: ‘close’ was not declared in this scopepi

其实有很多错误 我截取了一段,都是类似这样的错误,需要改以下share.h的文件内容就可以了

/*    
 * shared.h    
 *    
 * This file is part of the QtSixA, the Sixaxis Joystick Manager    
 * Copyright 2008-2011 Filipe Coelho <[email protected]>    
 *    
 * QtSixA can be redistributed and/or modified under the terms of the GNU General    
 * Public License (Version 2), as published by the Free Software Foundation.    
 * A copy of the license is included in the QtSixA source code, or can be found    
 * online at www.gnu.org/licenses.    
 *    
 * QtSixA is distributed in the hope that it will be useful, but WITHOUT ANY    
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR    
 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.    
 *    
 */    
#ifndef SHARED_H    
#define SHARED_H    
#include <unistd.h>    
struct dev_led {    
bool enabled;    
bool anim;    
bool auto_sel;    
int number;    
};    
struct dev_joystick {    
bool enabled;    
bool buttons;    
bool axis;    
bool sbuttons;    
bool accel;    
bool accon;    
bool speed;    
bool pos;    
};    
struct dev_remote {    
bool enabled;    
bool numeric;    
bool dvd;    
bool directional;    
bool multimedia;    
};    
struct dev_input {    
bool enabled;    
int key_select, key_l3, key_r3, key_start, key_up, key_right, key_down, key_left;    
int key_l2, key_r2, key_l1, key_r1, key_tri, key_cir, key_squ, key_cro, key_ps;    
int axis_l_type, axis_r_type, axis_speed;    
int axis_l_up, axis_l_right, axis_l_down, axis_l_left;    
int axis_r_up, axis_r_right, axis_r_down, axis_r_left;    
bool use_lr3;    
};    
struct dev_rumble {    
bool enabled;    
bool old_mode;    
};    
struct dev_timeout {    
bool enabled;    
int timeout;    
};    
struct device_settings {    
bool auto_disconnect;    
struct dev_led led;    
struct dev_joystick joystick;    
struct dev_remote remote;    
struct dev_input input;    
struct dev_rumble rumble;    
struct dev_timeout timeout;    
};    
bool was_active();    
void set_active(int active);    
bool io_canceled();    
void sig_term(int sig);    
void open_log(const char *app_name);    
struct device_settings init_values(const char *mac);    
int get_joystick_number();    
void enable_sixaxis(int csk);    
#endif // SHARED_H

这是完整文件内容,完全覆盖就可以使用

@raspberrypi ~/tools/sixa/QtSixA-1.5.1/sixad $ sudo make install

启动”sixad“, 按下手柄”ps“键, 等待出现以下信息就成功了:
[email protected] ~/tools/sixa/QtSixA-1.5.1/sixad $ sudo sixad --start
sixad-bin[6117]: started
sixad-bin[6117]: sixad started, press the PS button now
sixad-bin[6117]: unable to connect to sdp session
sixad-bin[6117]: Connected Sony Computer Entertainment Wireless Controller (xx:xx:xx:xx:xx:xx)

之后就没有错误了 按照步骤 就可以连上ps3手柄

时间: 2024-10-13 03:16:06

树莓派3 蓝牙连接 PS3手柄的相关文章

玩转树莓派&mdash;&mdash;支持PS3手柄

之前写过一篇用树莓派玩模拟器的.通过retropie可以集成不同的模拟器,在树莓派上玩街机.玩红白机.玩PSP都不是问题. 不过我不喜欢让游戏直接接管我的树莓派,毕竟用树莓派还得做正经事对吧. 还好retorpie提供on the top的使用方式,只不过是需要自行运行Shell命令.这里有指导: https://github.com/retropie/retropie-setup/wiki/Manual-Installation 可以直接通过github拉回来:     git clone -

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

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

【树莓派】树莓派3与手机之间蓝牙连接配置记录

配置树莓派3是支持蓝牙连接的. 这让在进行文件传输,或者音频等都可以使用,可以带来一定的便捷性. 具体怎么做呢?我实践了一下,发现是可以的,下面截取部分相关命令和截图等,供参考. 一.树莓派与手机之间蓝牙配对: 树莓派3直接支持蓝牙,使用直接使用自带命令即可,先打开要连接的蓝牙设备,然后配置树莓派: [email protected]:~ $ sudo bluetoothctl [sudo] password for lifeccp: [NEW] Controller B8:27:EB:F4:4

用树莓派探索蓝牙

摘要: 作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 蓝牙是一个使用广泛的无线通信协议,这两年又随着物联网概念进一步推广.我将介绍蓝牙协议,特别是低功耗蓝牙,并用树莓派来实践.树莓派3中内置了蓝牙模块.树莓派通过UART接口和该模块通信.树莓派1和树莓派2中没有内置的蓝牙模块,不过你可以通过USB安装额外的蓝牙适配器. 蓝牙介绍 蓝牙最初由爱立信创制,旨在实现可不同设备之间的无线连接.蓝牙无线通信的频率在2.4GHz附近,和WiFi一样,都属于特高

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

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

进行蓝牙连接的两种方式

为了在两台设备间创建一个连接,必须实现服务器端和客户端的机制,因为一个设备必须打开一个Server Socket,而另一个必须发起连接(使用服务器端设备的MAC地址发起连接).当服务器端和客户端在同一个RFCOMM信道上都有一个BluetoothSocket时,则两端就建立了连接.此刻,每个设备都能获得一个输入输出流,进行数据传输.服务器端和客户端获得BluetoothSocket的方法是不同的,服务器端是在客户端的连接被接受时才产生一个BluetoothSocket,客户端是在打开一个到服务器

树莓派学习【一】:树莓派的SSH连接

将树莓派通过网线连接到路由器.(PS:只要你的电脑能通过网线连接到路由器,通过自动获取IP能上网.这里树莓派通过网线直接连接就能够上网,当初BZ小白,以为还需要设置一些登录密码什么的,结果在这上边就研究了半天.) 在树莓派上运行LX终端(LXTerminal),输入: ifconfig 查询树莓派的IP. 其中黄色框框中就是你所关注的信息,inet addr是树莓派的IP. 当然还有一种办法判断你的PI是否连上网,就是 ping  指令. ping www.baidu.com 当然这会显示很多,

基于swift语言iOS8的蓝牙连接(初步)

看过一些蓝牙App的事例,大体上对蓝牙的连接过程进行了了解.但是开始真正自己写一个小的BLE程序的时候就举步维艰了.那些模棱两可的概念在头脑中瞬间就蒸发了,所以还是决定从最基本的蓝牙连接过程进行.这里所说的蓝牙是针对 bluetooth 4.0的. 第一步就是去看官方的关于蓝牙框架的文档,即Core Bluetooth Programming Guide,在苹果的官方网站上可以轻松找到,不管你对蓝牙的基本概念是否有了解,这个文件可以使你更好的对蓝牙的连接过程有个了解.这个文档的前面几张介绍了关于

用蓝牙连接debian和诺基亚手机

本方法已经用debian 4.0.诺基亚9300和一个hl-united牌子的USB蓝牙适配器测试过了,效果很好.             1.安装必要的软件包:   #apt-get install  gnome-bluetooth bluez-utils               2.插上蓝牙适配器,挂载必要的内核模块儿:            #modprobe l2cap   #modprobe rfcomm               3.建立一个新的蓝牙设备.我们建立一个由Usb到