Da mein Blog heute erfolgreich umgezogen ist möchte ich nun meinen abschliesenden Artikel zum HTPC Projekte “Das kleine Schwarze” veröffentlichen. Ich möchte das Media-Center XBMC ohne Tastatur, nur mit einer Fernbedienung steuern.
Dazu benötigen wir das Paket LIRC und müssen die Dateien hardware.conf und lircd.conf für die jeweilige Fernbedienung erstellen. Im Gegenzug brauchen wir für XBMC eine angepasste Lircmap.xml und Keyboard.xml (ab Version 9.11) für die Fernbedienung.
Daher möchte ich euch eine HowTo für die PC-Funkfernbedienung X10 nicht vorenthalten.
Voraussetzung:
- Ubuntu Karmic 9.10
- NVIDIA Treiber 195 mit VDPAU Unterstützung (HowTo)
- DVB-S2 – Treiber s2-liplianin installieren (HowTo)
- VDR 1.7.12 + ExtensionPatch mit Streamdev Plugin (HowTo)
- XBMC + VDR Plugin mit VDPAU Unterstützung (HowTo)
HowTo: LIRC – XBMC mit PC-Funkfernbedienung X10 steuern
Zuerst editieren wir die blacklist.conf und fügen das Modul ati_remote ein damit unser USB-IR Empfänger nicht falsch erkannt wird.
sudo vi /etc/modprobe.d/blacklist.conf
blacklist ati_remote
Nun schließen wir den IR-Empfänger am Computer an, installieren LIRC…
sudo aptitude install lirc
…und laden die Module.
modprobe lirc_dev
modprobe lirc_atiusb
Jetzt prüfen wir ob der IR-Empfänger als Device lirc0 erkannt wurde, …
ls /dev/lirc*
…wenn ja, geht es mit dem Editieren der hardware.conf und lircd.conf (bereitgestellt von Phr0zenPhara0 aus dem VDR Portal) weiter. (Download am Ende des Artikels)
gksu gedit /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="None"
REMOTE_MODULES="lirc_atiusb"
REMOTE_DRIVER=""
REMOTE_DEVICE="/dev/lirc0"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS=""
#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""
#Enable lircd
START_LIRCD="true"
#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD="false"
#Try to load appropriate kernel modules
LOAD_MODULES="true"
# Default configuration files for your hardware if any
LIRCMD_CONF=""
#Forcing noninteractive reconfiguration
#If lirc is to be reconfigured by an external application
#that doesn't have a debconf frontend available, the noninteractive
#frontend can be invoked and set to parse REMOTE and TRANSMITTER
#It will then populate all other variables without any user input
#If you would like to configure lirc via standard methods, be sure
#to leave this set to "false"
FORCE_NONINTERACTIVE_RECONFIGURATION="false"
START_LIRCMD=""
gksu gedit /etc/lirc/lircd.conf
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.8.6
#
# contributed by
#
# brand: PC-Funkfernbedienung X10
# model no. of remote control:
# devices being controlled by this remote:
begin remote
name x10
bits 16
eps 30
aeps 100
one 0 0
zero 0 0
pre_data_bits 8
pre_data 0x14
post_data_bits 16
post_data 0x0
gap 139990
min_repeat 2
toggle_bit_mask 0x80800000
begin codes
livetv 0xF11C
rectv 0x6D98
photo 0xDA05
music 0x5B86
dvdmenu 0xD904
video 0x82AD
audio 0x0732
angle 0x89B4
title 0x0A35
subtitle 0x88B3
up 0xEF1A
down 0x77A2
left 0xF21D
right 0x749F
ok 0xF31E
1 0x628D
2 0xE30E
3 0x648F
4 0xE510
5 0x6691
6 0xE712
7 0x6893
8 0xE914
9 0x6A95
0 0xEC17
asterisk 0x8CB7
hash 0x0D38
world 0x709B
rewind 0xF924
play 0x7AA5
forward 0xFB26
pause 0x7EA9
previous 0xF621
next 0x78A3
stop 0xFD28
record 0x7CA7
off 0xD702
guide 0x86B1
text 0xEB16
volume+ 0x5E89
volume- 0xDD08
mute 0x5580
program+ 0xE00B
program- 0x618C
back 0xF520
info 0x84AF
end codes
end remote
Nun erstellen wir die angepasste Lircmap.xml und Keyboard.xml (beide Dateien wurden von Phr0zenPhara0 aus dem VDR Portal bereitgestellt) für unser XBMC. (Download am Ende des Artikels)
gedit ~/.xbmc/userdata/Lircmap.xml
<lircmap>
<remote device="x10">
<obc1>livetv</obc1>
<obc2>rectv</obc2>
<obc3>photo</obc3>
<obc4>music</obc4>
<obc5>dvdmenu</obc5>
<obc6>video</obc6>
<obc7>audio</obc7>
<obc8>angle</obc8>
<obc9>title</obc9>
<obc10>subtitle</obc10>
<obc11>up</obc11>
<obc12>down</obc12>
<obc13>left</obc13>
<obc14>right</obc14>
<obc15>ok</obc15>
<obc16>1</obc16>
<obc17>2</obc17>
<obc18>3</obc18>
<obc19>4</obc19>
<obc20>5</obc20>
<obc21>6</obc21>
<obc22>7</obc22>
<obc23>8</obc23>
<obc24>9</obc24>
<obc25>0</obc25>
<obc26>asterisk</obc26>
<obc27>hash</obc27>
<obc28>world</obc28>
<obc29>rewind</obc29>
<obc30>play</obc30>
<obc31>forward</obc31>
<obc32>pause</obc32>
<obc33>previous</obc33>
<obc34>next</obc34>
<obc35>stop</obc35>
<obc36>record</obc36>
<obc37>off</obc37>
<obc38>guide</obc38>
<obc39>text</obc39>
<obc40>volume+</obc40>
<obc41>volume-</obc41>
<obc42>mute</obc42>
<obc43>program+</obc43>
<obc44>program-</obc44>
<obc45>back</obc45>
<obc46>info</obc46>
</remote>
</lircmap>
gedit ~/.xbmc/userdata/keymaps/Keyboard.xml
<!-- This file contains the mapping of keys (gamepad, remote, and keyboard) to actions within XBMC -->
<!-- The <global> section is a fall through - they will only be used if the button is not -->
<!-- used in the current window's section. Note that there is only handling -->
<!-- for a single action per button at this stage. -->
<!-- For joystick/gamepad configuration under linux/win32, see below as it differs from xbox -->
<!-- gamepads. -->
<!-- The format is: -->
<!-- <device> -->
<!-- <button>action</button> -->
<!-- </device> -->
<!-- To map keys from other remotes using the RCA protocol, you may add <universalremote> blocks -->
<!-- In this case, the tags used are <obc#> where # is the original button code (OBC) of the key -->
<!-- You set it up by adding a <universalremote> block to the window or <global> section: -->
<!-- <universalremote> -->
<!-- <obc45>Stop</obc45> -->
<!-- </universalremote> -->
<!-- To find out the OBC's of your remote, try enabling the <displayremotecodes> tag in AdvancedSettings.xml -->
<!-- Note that the action can be a built-in function. -->
<!-- eg <B>XBMC.ActivateWindow(MyMusic)</B> -->
<!-- would automatically go to My Music on the press of the B button. -->
<!-- Joysticks / Gamepads: -->
<!-- See the sample PS3 controller configuration below for the format. -->
<!-- -->
<!-- Joystick Name: -->
<!-- Do 'cat /proc/bus/input/devices' or see your xbmc log file to find the names of -->
<!-- detected joysticks. The name used in the configuration should match the detected name. -->
<!-- -->
<!-- Button Ids: -->
<!-- 'id' is the button ID used by SDL. Joystick button ids of connected joysticks appear -->
<!-- in xbmc.log when they are pressed. Use your log to map custom buttons to actions. -->
<!-- -->
<!-- Axis Ids / Analog Controls -->
<!-- Coming soon. -->
<keymap>
<global>
<universalremote>
<obc25>number0</obc25>
<obc16>number1</obc16>
<obc17>number2</obc17>
<obc18>number3</obc18>
<obc19>number4</obc19>
<obc20>number5</obc20>
<obc21>number6</obc21>
<obc22>number7</obc22>
<obc23>number8</obc23>
<obc24>number9</obc24>
<obc30>Play</obc30>
<obc32>Pause</obc32>
<obc35>Stop</obc35>
<obc31>FastForward</obc31>
<obc29>Rewind</obc29>
<obc13>Left</obc13>
<obc14>Right</obc14>
<obc11>Up</obc11>
<obc12>Down</obc12>
<obc15>Select</obc15>
<obc43>PageUp</obc43>
<obc44>PageDown</obc44>
<obc45>ParentDir</obc45>
<obc5>PreviousMenu</obc5>
<obc9>ContextMenu</obc9>
<obc46>Info</obc46>
<obc34>SkipNext</obc34>
<obc33>SkipPrevious</obc33>
<obc28>FullScreen</obc28>
<obc8>AspectRatio</obc8>
<obc36>Screenshot</obc36>
<obc40>VolumeUp</obc40>
<obc41>VolumeDown</obc41>
<obc42>Mute</obc42>
<obc37>ActivateWindow(shutdownmenu)</obc37>
<obc6>XBMC.ActivateWindow(MyVideos)</obc6>
<obc4>XBMC.ActivateWindow(MyMusic)</obc4>
<obc3>XBMC.ActivateWindow(MyPictures)</obc3>
<obc1>XBMC.ActivateWindow(MyTV)</obc1>
<obc2>XBMC.ActivateWindow(MyTV)</obc2>
</universalremote>
</global>
<Home>
<universalremote>
<obc5>XBMC.Skin.ToggleSetting(HomeViewToggle)</obc5>
<obc46>XBMC.ActivateWindow(SystemInfo)</obc46>
<obc26>XBMC.ActivateWindow(Weather)</obc26>
<obc27>XBMC.ActivateWindow(Settings)</obc27>
</universalremote>
</Home>
<MyFiles>
<universalremote>
<obc25>Delete</obc25>
<obc16>Highlight</obc16>
<obc19>Copy</obc19>
<obc22>Move</obc22>
<obc20>Delete</obc20>
<obc18>VolumeUp</obc18>
<obc21>VolumeDown</obc21>
<obc24>Mute</obc24>
</universalremote>
</MyFiles>
<MyMusicPlaylist>
<universalremote>
<obc45>Playlist</obc45> <!-- Close playlist -->
<obc25>Delete</obc25>
<obc17>MoveItemUp</obc17>
<obc20>MoveItemDown</obc20>
<obc18>VolumeUp</obc18>
<obc21>VolumeDown</obc21>
<obc24>Mute</obc24>
</universalremote>
</MyMusicPlaylist>
<MyMusicPlaylistEditor>
<universalremote>
<obc25>Queue</obc25>
</universalremote>
</MyMusicPlaylistEditor>
<MyMusicFiles>
<universalremote>
<obc25>Queue</obc25>
<obc26>Queue</obc26>
<obc18>VolumeUp</obc18>
<obc21>VolumeDown</obc21>
<obc24>Mute</obc24>
</universalremote>
</MyMusicFiles>
<MyMusicLibrary>
<universalremote>
<obc25>Queue</obc25>
<obc26>Queue</obc26>
<obc18>VolumeUp</obc18>
<obc21>VolumeDown</obc21>
<obc24>Mute</obc24>
</universalremote>
</MyMusicLibrary>
<FullscreenVideo>
<universalremote>
<obc13>StepBack</obc13>
<obc14>StepForward</obc14>
<obc11>BigStepForward</obc11>
<obc12>BigStepBack</obc12>
<obc5>OSD</obc5>
<obc9>CodecInfo</obc9>
<obc8>AspectRatio</obc8>
<obc10>ShowSubtitles</obc10>
<obc7>AudioNextLanguage</obc7>
<obc46>Info</obc46>
<obc15>Playlist</obc15>
<obc38>XBMC.ActivateWindow(TVOSDGuide)</obc38>
<obc39>XBMC.ActivateWindow(Teletext)</obc39>
</universalremote>
</FullscreenVideo>
<FullscreenInfo>
<universalremote>
<obc9>CodecInfo</obc9>
<obc38>XBMC.ActivateWindow(TVOSDGuide)</obc38>
<obc39>XBMC.ActivateWindow(Teletext)</obc39>
<obc45>Close</obc45>
<obc46>Close</obc46>
<obc5>OSD</obc5>
</universalremote>
</FullscreenInfo>
<PlayerControls>
<universalremote>
<obc15>Close</obc15>
</universalremote>
</PlayerControls>
<Visualisation>
<universalremote>
<obc13>PreviousPreset</obc13>
<obc14>NextPreset</obc14>
<obc11>IncreaseRating</obc11>
<obc12>DecreaseRating</obc12>
<obc45>LockPreset</obc45>
<obc9>CodecInfo</obc9>
<obc15>XBMC.ActivateWindow(VisualisationPresetList)</obc15>
<obc5>XBMC.ActivateWindow(MusicOSD)</obc5>
<obc46>Info</obc46>
</universalremote>
</Visualisation>
<MusicOSD>
<universalremote>
<obc5>Close</obc5>
<obc45>Close</obc45>
<obc46>Info</obc46>
</universalremote>
</MusicOSD>
<VisualisationSettings>
<universalremote>
<obc5>Close</obc5>
<obc45>Close</obc45>
</universalremote>
</VisualisationSettings>
<VisualisationPresetList>
<universalremote>
<obc5>Close</obc5>
<obc45>Close</obc45>
</universalremote>
</VisualisationPresetList>
<SlideShow>
<universalremote>
<obc25>ZoomNormal</obc25>
<obc16>ZoomLevel1</obc16>
<obc17>ZoomLevel2</obc17>
<obc18>ZoomLevel3</obc18>
<obc19>ZoomLevel4</obc19>
<obc20>ZoomLevel5</obc20>
<obc21>ZoomLevel6</obc21>
<obc22>ZoomLevel7</obc22>
<obc23>ZoomLevel8</obc23>
<obc24>ZoomLevel9</obc24>
<obc46>CodecInfo</obc46>
<obc34>NextPicture</obc34>
<obc33>PreviousPicture</obc33>
<obc9>Info</obc9>
<obc15>Rotate</obc15>
<obc45>PreviousMenu</obc45>
</universalremote>
</SlideShow>
<ScreenCalibration>
<universalremote>
<obc15>NextCalibration</obc15>
<obc25>ResetCalibration</obc25>
<obc34>NextResolution</obc34>
</universalremote>
</ScreenCalibration>
<GUICalibration>
<universalremote>
<obc15>NextCalibration</obc15>
<obc25>ResetCalibration</obc25>
</universalremote>
</GUICalibration>
<SelectDialog>
<universalremote>
<obc45>Close</obc45>
</universalremote>
</SelectDialog>
<VideoOSD>
<universalremote>
<obc5>PreviousMenu</obc5>
<obc45>Close</obc45>
</universalremote>
</VideoOSD>
<VideoMenu>
<universalremote>
<obc5>OSD</obc5>
<obc45>PreviousMenu</obc45>
<obc46>Info</obc46>
<obc9>CodecInfo</obc9>
<obc25>Number0</obc25>
<obc16>Number1</obc16>
<obc17>Number2</obc17>
<obc18>Number3</obc18>
<obc19>Number4</obc19>
<obc20>Number5</obc20>
<obc21>Number6</obc21>
<obc22>Number7</obc22>
<obc23>Number8</obc23>
<obc24>Number9</obc24>
</universalremote>
</VideoMenu>
<OSDVideoSettings>
<universalremote>
<obc5>Close</obc5>
<obc45>Close</obc45>
</universalremote>
</OSDVideoSettings>
<OSDAudioSettings>
<universalremote>
<obc5>Close</obc5>
<obc45>Close</obc45>
</universalremote>
</OSDAudioSettings>
<VideoBookmarks>
<universalremote>
<obc45>Close</obc45>
<obc5>Close</obc5>
<obc25>Delete</obc25>
</universalremote>
</VideoBookmarks>
<MyVideoLibrary>
<universalremote>
<obc26>Queue</obc26>
<obc25>Delete</obc25>
<obc18>VolumeUp</obc18>
<obc21>VolumeDown</obc21>
<obc24>Mute</obc24>
</universalremote>
</MyVideoLibrary>
<MyVideoFiles>
<universalremote>
<obc26>Queue</obc26>
<obc18>VolumeUp</obc18>
<obc21>VolumeDown</obc21>
<obc24>Mute</obc24>
</universalremote>
</MyVideoFiles>
<MyVideoPlaylist>
<universalremote>
<obc45>Playlist</obc45> <!-- Close playlist -->
<obc25>Delete</obc25>
<obc17>MoveItemUp</obc17>
<obc20>MoveItemDown</obc20>
<obc18>VolumeUp</obc18>
<obc21>VolumeDown</obc21>
<obc24>Mute</obc24>
</universalremote>
</MyVideoPlaylist>
<VirtualKeyboard>
<universalremote>
<obc45>BackSpace</obc45>
<obc26>Shift</obc26>
<obc27>Symbols</obc27>
<obc25>Number0</obc25>
<obc16>Number1</obc16>
<obc17>Number2</obc17>
<obc18>Number3</obc18>
<obc19>Number4</obc19>
<obc20>Number5</obc20>
<obc21>Number6</obc21>
<obc22>Number7</obc22>
<obc23>Number8</obc23>
<obc24>Number9</obc24>
<obc44>CursorLeft</obc44>
<obc43>CursorRight</obc43>
</universalremote>
</VirtualKeyboard>
<ContextMenu>
<universalremote>
<obc45>Close</obc45>
</universalremote>
</ContextMenu>
<FileStackingDialog>
<universalremote>
<obc45>Close</obc45>
</universalremote>
</FileStackingDialog>
<Scripts>
<universalremote>
<obc46>XBMC.ActivateWindow(ScriptsDebugInfo)</obc46>
</universalremote>
</Scripts>
<ScriptsDebugInfo>
<universalremote>
<obc46>Info</obc46> <!-- clears debug python info -->
</universalremote>
</ScriptsDebugInfo>
<NumericInput>
<universalremote>
<obc25>Number0</obc25>
<obc16>Number1</obc16>
<obc17>Number2</obc17>
<obc18>Number3</obc18>
<obc19>Number4</obc19>
<obc20>Number5</obc20>
<obc21>Number6</obc21>
<obc22>Number7</obc22>
<obc23>Number8</obc23>
<obc24>Number9</obc24>
<obc45>BackSpace</obc45>
</universalremote>
</NumericInput>
<Weather>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</Weather>
<Settings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</Settings>
<MyPicturesSettings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</MyPicturesSettings>
<MyProgramsSettings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</MyProgramsSettings>
<MyWeatherSettings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</MyWeatherSettings>
<MyMusicSettings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</MyMusicSettings>
<SystemSettings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</SystemSettings>
<MyVideosSettings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</MyVideosSettings>
<NetworkSettings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</NetworkSettings>
<AppearanceSettings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</AppearanceSettings>
<Profiles>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</Profiles>
<systeminfo>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</systeminfo>
<shutdownmenu>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</shutdownmenu>
<submenu>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</submenu>
<MusicInformation>
<universalremote>
<obc45>Close</obc45>
</universalremote>
</MusicInformation>
<MovieInformation>
<universalremote>
<obc45>Close</obc45>
</universalremote>
</MovieInformation>
<LockSettings>
<universalremote>
<obc5>Close</obc5>
<obc45>PreviousMenu</obc45>
</universalremote>
</LockSettings>
<ProfileSettings>
<universalremote>
<obc5>Close</obc5>
<obc45>PreviousMenu</obc45>
</universalremote>
</ProfileSettings>
<PictureInfo>
<universalremote>
<obc34>NextPicture</obc34>
<obc33>PreviousPicture</obc33>
<obc46>Close</obc46>
<obc45>Close</obc45>
</universalremote>
</PictureInfo>
<Favourites>
<universalremote>
<obc45>Close</obc45>
</universalremote>
</Favourites>
<EPGProgInfo>
<universalremote>
<obc45>Close</obc45>
<obc5>Close</obc5>
<obc38>Close</obc38>
</universalremote>
</EPGProgInfo>
<TVOSDChannels>
<universalremote>
<obc5>Close</obc5>
<obc45>Close</obc45>
</universalremote>
</TVOSDChannels>
<TVOSDGuide>
<universalremote>
<obc45>Close</obc45>
<obc5>Close</obc5>
<obc38>Close</obc38>
</universalremote>
</TVOSDGuide>
<MyTVSettings>
<universalremote>
<obc45>PreviousMenu</obc45>
</universalremote>
</MyTVSettings>
<Teletext>
<universalremote>
<obc25>number0</obc25>
<obc16>number1</obc16>
<obc17>number2</obc17>
<obc18>number3</obc18>
<obc19>number4</obc19>
<obc20>number5</obc20>
<obc21>number6</obc21>
<obc22>number7</obc22>
<obc23>number8</obc23>
<obc24>number9</obc24>
<obc7>Red</obc7>
<obc10>Green</obc10>
<obc8>Yellow</obc8>
<obc9>Blue</obc9>
<obc46>Info</obc46>
<obc45>Close</obc45>
<obc5>Close</obc5>
<obc39>Close</obc39>
</universalremote>
</Teletext>
</keymap>
Jetzt starten wir den LIRC Dienst…
sudo /etc/init.d/lirc start
…und danach unser XBMC. Schwupps, können wir das Media-Center über die X10 Funkfernbedienung steuern. SUPER!!
Link: PC-Funkfernbedienung X10
Download: LIRC – PC-Funkfernbedienung X10 – hardware.conf & lircd.conf und XBMC – PC-Funkfernbedienung X10 – Lircmap.xml & Keyboard.xml