pi@retropie:~ $ sudo -i
root@retropie:~ # wget http://www.pabr.org/sixlinux/sixpair.c
root@retropie:~ # gcc -o sixpair sixpair.c -lusb
티스토리 뷰
[Retropie] 추억의 오락실 게임하기 - 3. PS3 듀얼 쇼크 콘트롤러 블루투스로 연결하기
Arc Lab. 2016. 10. 6. 02:34[업데이트 2016.10.11 10:11]
1) 블루투스 및 조이스틱 패키지 설치
아래와 같이 블루투스 및 조이스틱 관련 패키지를 설치합니다.
pi@retropie:~ $ sudo apt-get install bluez-hcidump checkinstall libusb-dev libbluetooth-dev
** Retropie 4.0.2버전 기준 bluez-utils, bluez-compat deprecated됨. joystick 패키지는 Retropie를 최신 패키지로 update시 이미 최신 버전으로 반영 되어 설치 불필요합니다.
hciconfig를 통해 블루투스가 정상적으로 인식되었는지 확인합니다.
pi@retropie:~ $ hciconfig
아래와 같은 정보가 표시되면 정상적으로 인식된 경우입니다.
pi@retropie:~ $ hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:02:72:BF:BC:8F ACL MTU: 1022:8 SCO MTU: 121:3
UP RUNNING PSCAN
RX bytes:16777722 acl:289271 sco:0 events:116 errors:0
TX bytes:2561 acl:53 sco:0 commands:56 errors:0
2) PS3 듀얼 쇼크3 컨트롤러 라이브러리 Sixpair 다운로드 및 컴파일
PS3 듀얼 쇼크3 컨트롤러 사용을 위해서는 라이브러리 다운로드 및 컴파일이 필요합니다.
아래와 같이 root 권한으로 라이브러리 다운로드 및 컴파일을 수행합니다.
컴파일후 현재 위치에 sixpair라는 실행 파일이 생성됩니다.
이제 PS3 듀얼 쇼크3 컨트롤러를 USB케이블로 Raspberry Pi 3와 연결합니다.
연결 후 생성된 six pair 실행 파일을 실행하면 아래와 같이 Raspberry Pi 3의 블루투스와 컨트롤러 주소가 모두 보인다면 정상적으로 인식된 것입니다.
root@retropie:~ # sudo ./sixpair Current Bluetooth master: DE:AD:BE:EF:00:00 Setting master bd_addr to: 00:1F:81:00:06:20
3) 조이스틱 매니저 Sixaxis 다운로드 및 컴파일
조이스틱 매니저인 Sixaxis 다운로드 및 컴파일을 수행합니다. 4번째 줄에서 make 수행시 컴파일 에러가 발생합니다.
(참고: https://bugs.launchpad.net/qtsixa/+bug/1275306)
root@retropie:~ # wget http://sourceforge.net/projects/qtsixa/files/QtSixA%201.5.1/QtSixA-1.5.1-src.tar.gz root@retropie:~ # tar xfvz QtSixA-1.5.1-src.tar.gz root@retropie:~ # cd QtSixA-1.5.1/sixad root@retropie:~ /QtSixA-1.5.1/sixad # make root@retropie:~ /QtSixA-1.5.1/sixad # cd .. root@retropie:~ # cd .. root@retropie:/ # sudo mkdir -p /var/lib/sixad/profiles root@retropie:/ # sudo checkinstall
해당 이슈를 수정하기 위해 아래의 header파일들을 vi에디터로 수정합니다.
각 header파일들에 unistd.h header파일을 포함 시킵니다. 그리고 다시 make를 수행하면 정상 빌드가 됩니다.
** Header Files: bluetooth.h, remote.h, shared.h, sixaxis.h, textfile.h, uinput.h
#include <unistd.h>
해당 컴파일 이슈 해결 후, 나머지 명령어를 수행합니다.
수행 완료후, 다음 스텝을 진행합니다.
2개 이상의 컨트롤러 인식을 위해 아래와 같이 수행합니다.
hciconfig 실행후 UP RUNNING PSCAN ISCAN 가 확인되어야 합니다..
ISCAN을 활성화 시키기 위해 아래와 같이 수행합니다.
hciconfig hci0 piscan 명령을 vi에디터를 통해 /etc/rc.local 파일에 추가합니다..
추가시 exit 0 명령어 전에 추가함에 유의합니다.
수행 완료후, 다음과 같이 sixad 데몬을 실행 후, 컨트롤러의 PS로고 버튼을 클릭합니다.
클릭시 각각의 컨트롤러가 인식됩니다.
pi@retropie:/ # sudo sixad --start
pi@retropie:/ # sudo update-rc.d sixad defaults
pi@retropie:/ # sudo reboot
** 만약 정상적으로 인식이 안되면, 아래와 같이 bluetoothctl 명령어를 수행하여 인식하도록 수정합니다.
pi@retropie:~ $ sudo bluetoothctl
sudo bluetoothctl 수행후 컨트롤러의 PS버튼을 누르면 아래와 같이 Connected여부가 Yes로 변경됩니다.
그런후 trust 명령어를 통해 블루투스가 인식되도록 수행합니다.
[CHG] Device 64:D4:BD:B4:AD:B0 Connected: Yes
[bluetooth]# trust 64:D4:BD:B4:AD:B0
Changing 64:D4:BD:B4:AD:B0 Trusted: yes
아래와 같이 조이스틱이 정상 연결되었는지 확인해볼 수 있습니다.
조이스틱 버튼 및 스틱 등을 누를 때, 값이 변경되는지 확인하면 됩니다.
조이스틱이 인식되는 순서에 따라 js0,js1,..jsN번으로 인식되니, 이점 참고하여 확인하면 됩니다.
pi@retropie:~ $ sudo jstest /dev/input/js0
이제 emulationstation을 수행한 후, PS3 컨트롤러 버튼 설정을 진행합니다.
pi@retropie:~ $ sudo emulationstation
이것으로 PS3 듀얼 쇼크 콘트롤러 블루투스로 연결하기를 마칩니다.
다음 포스팅에서는 에뮬 롬 복사 및 게임 실행에 대해 작성하도록 하겠습니다.
- Total
- Today
- Yesterday
- 2D Game
- Sea Bottom
- #TensorFlow
- Badge
- Physical Simulation
- OST
- Game Engine
- #REST API
- Memorize
- English
- GOD
- #ELK Stack
- project
- aws #cloudfront
- docker
- ILoop Engine
- 도커
- Ragdoll
- belief
- some time ago
- ate
- Meow
- Mask R-CNN
- Library
- #ApacheSpark
- SSM
- #ApacheZeppelin
- Worry
- Jekyll and Hyde
- sentence test
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |