Lumber room
10 June 2010

Подключение и использование пульта PlayStation 3 BD Remote

Попал мне тут в руки Bluetooth пульт от Play Station 3.
image

И решил я попробовать подключить его к компу, дабы обеспечить большее удобство просмотра фильмов. По старой привычке вооружился бубном и большим напильником (ибо у меня установлен линукс).
Но, все оказалось очень просто.

Т.к. у меня установлена Ubuntu 10.04, все дальнейшие операции будут приведены как они есть в этом дистрибутиве.
В интернете, по ходу дела, нашел несколько мануалов, но все они были неполными, либо не работали, либо уже устарели.
Итак, первое что нам нужно — сопряжение пульта и ПК.
Для Убунту версии 10.04 все что нужно уже есть в штатных репозиториях.
Для более старых версий системы можно использовать этот PPA:

> sudo apt-get purge bluez
> sudo echo "deb ppa.launchpad.net/kitlaan/ppa/ubuntu jaunty main" >> /etc/apt/sources.list
> sudo echo "deb-src ppa.launchpad.net/kitlaan/ppa/ubuntu jaunty main" >> /etc/apt/sources.list
> sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6F7177CC
> sudo apt-get update
> sudo apt-get install bluez


Для других дистрибутивов можно использовать этот патч для добавления поддержки пульта в bluez.
Затем проверяем, загружен ли модуль ядра uinput:

> lsmod | grep uinput

Если загружен — то все в порядке. Если же нет, добавляем его в «автозагрузку»:

> sudo echo uinput >> /etc/modules

Затем, ставим blueman:

> sudo aptitude install blueman

и замещаем штатный bluetooth апплет гнома апплетом blueman-applet через Startup Applications.
Все, теперь можно сопрягать. Запускаем поиск устройств в апплете blueman, давим START + ENTER на пульте и подцепляем дивайс. Кстати, для пульта не нужен Passkey:

image
image

> grep -i remote /proc/bus/input/devices
N: Name="PS3 Remote Controller"


Можно также проверить пульт через xev, т.к. он посылает иксовые события при нажатии некоторых кнопок.
Далее нужно будет поставить и настроить lirc.

> sudo aptitude install gnome-lirc-properties lirc

Запускаем gnome-lirc-properties (Preferences -> Infrared Remote Control) и давим на Auto-detect. В списке выбираем пульт:

image

Там же можно потестировать пульт нажимая кнопки на нем (секция Configuration test)

image

Следующий шаг опционален, но я его сделал для некоторого упрощения дальнейшей конфигурации.
Правим /etc/lirc/lircd.conf.gnome:

begin remote
name ps3-bd
bits 32

begin codes
BTN_0 0x10100
BTN_THUMBL 0x1013d
BTN_THUMBR 0x1013e
BTN_TL 0x10136
BTN_TL2 0x10138
BTN_TR 0x10137
BTN_TR2 0x10139
BTN_START 0x1013b
0 0x1000b
1 0x10002
2 0x10003
3 0x10004
4 0x10005
5 0x10006
6 0x10007
7 0x10008
8 0x10009
9 0x1000a
ANGLE 0x10173
AUDIO 0x10188
BACK 0x1009e
BLUE 0x10191
BREAK 0x1019b
CANCEL 0x100df
CLEAR 0x10163
CLOSE 0x100ce
CONTEXT_MENU 0x101b6
DOWN 0x1006c
EJECTCD 0x100a1
ENTER 0x1001c
ESC 0x10001
EXIT 0x100ae
FORWARD 0x1009f
FRAMEBACK 0x101b4
FRAMEFORWARD 0x101b5
GREEN 0x1018f
HOMEPAGE 0x100ac
INFO 0x10166
LEFT 0x10069
MENU 0x1008b
NEXT 0x10197
OPTION 0x10165
PAUSE 0x10077
PLAY 0x100cf
PREVIOUS 0x1019c
RED 0x1018e
REWIND 0x100a8
RIGHT 0x1006a
SCREEN 0x10177
SELECT 0x10161
STOP 0x10080
SUBTITLE 0x10172
TIME 0x10167
UP 0x10067
YELLOW 0x10190
end codes
end remote


Я оставил там только фактически присутствующие на пульте кнопки и изменил имена кнопок.
Теперь перезапускаем lirc и добавляем его в автозапускаемые сервисы:

> sudo service lirc restart
> sudo update-rc.d lirc enable


и тестируем нажатия кнопок:

> irw
00000000000100a1 00 EJECTCD ps3-bd
000000000001018e 00 RED ps3-bd
000000000001018f 00 GREEN ps3-bd
0000000000010166 00 INFO ps3-bd
000000000001008b 00 MENU ps3-bd
00000000000101b6 00 CONTEXT_MENU ps3-bd
000000000001001c 00 ENTER ps3-bd
0000000000010165 00 OPTION ps3-bd
0000000000010100 00 BTN_0 ps3-bd
0000000000010136 00 BTN_TL ps3-bd
00000000000100cf 00 PLAY ps3-bd
0000000000010161 00 SELECT ps3-bd
0000000000010077 00 PAUSE ps3-bd


Собственно, вот практически и все. Теперь осталось сконфигурировать пользовательские приложения для работы с lirc. Настройки vlc и Rhythmbox:

image
image

И научить их принимать команды пульта от lirc. Делается это посредством модификации файла ~/.lircrc:

begin
prog = vlc
button = PLAY
config = key-play-pause
end
begin
prog = vlc
button = PAUSE
config = key-play-pause
end
begin
prog = vlc
button = STOP
config = key-stop
end
begin
prog = vlc
button = FORWARD
config = key-jump+short
end
begin
prog = vlc
button = REWIND
config = key-jump-short
end
begin
prog = vlc
button = NEXT
config = key-next
end
begin
prog = vlc
button = PREVIOUS
config = key-prev
end
begin
prog = vlc
button = UP
config = key-nav-up
end
begin
prog = vlc
button = DOWN
config = key-nav-down
end
begin
prog = vlc
button = LEFT
config = key-nav-left
end
begin
prog = vlc
button = ENTER
config = key-nav-activate
end
begin
prog = vlc
button = RIGHT
config = key-nav-right
end
begin
prog = vlc
button = BTN_TL
config = key-vol-up
repeat = 1
end
begin
prog = vlc
button = BTN_TL2
config = key-vol-down
repeat = 1
end
begin
prog = vlc
button = BTN_THUMBL
config = key-vol-mute
end
begin
prog = vlc
button = SCREEN
config = key-toggle-fullscreen
end
begin
prog = vlc
button = FRAMEFORWARD
config = key-frame-next
end
begin
prog = vlc
button = CONTEXT_MENU
config = key-disc-menu
end
begin
prog = vlc
button = AUDIO
config = key-audio-track
end
begin
prog = vlc
button = SUBTITLE
config = key-subtitle-track
end

begin
prog = Rhythmbox
button = PLAY
repeat = 1
config = play
end
begin
prog = Rhythmbox
button = PAUSE
repeat = 0
config = pause
end
begin
prog = Rhythmbox
button = STOP
repeat = 1
config = stop
end
begin
prog = Rhythmbox
button = NEXT
repeat = 1
config = next
end
begin
prog = Rhythmbox
button = PREVIOUS
repeat = 1
config = previous
end
begin
prog = Rhythmbox
button = FORWARD
repeat = 1
config = seek_forward
end
begin
prog = Rhythmbox
button = REWIND
repeat = 1
config = seek_backward
end
begin
prog = Rhythmbox
button = BTN_TL
repeat = 1
config = volume_up
end
begin
prog = Rhythmbox
button = BTN_TL2
repeat = 1
config = volume_down
end
begin
prog = Rhythmbox
button = BTN_THUMBL
repeat = 1
config = mute
end
begin
prog = Rhythmbox
button = EJECTCD
repeat = 1
config = quit
end


Параметр «button» — это название кнопки из /etc/lirc/lircd.conf.gnome (регистрозависимое), параметр «config» — посылаемая в приложение команда. Принимаемые приложением команды можно посмотреть в справке:

> vlc -H | awk '/--key/ {print "# "$1}'

Подобным образом можно настроить и другие приложения.

+18
1.5k 6
Comments 11
Top of the day