I want to describe how I put together my home media PC. I will describe the software configuration in connection with the IR-receiver.
As software basis I've used XBMC. For remote control I've chosen the IR-recieve from atric. As hardware base I selected an board build by jetway (JNC98-525). It has HDMI and an NVIDIA ION2 Chipset.
I bought this Board: NC98-510-LF
For the IR-Receiver we need a serial port on the board. This one has an serial port typ-9 (later this will be important).
CPU | Atom D525 1.80GHz |
---|---|
RAM | 2x DDR2 up to 4GB |
Video | NVIDIA ION2 GPU |
Video Ports | HDMI, VGA, DVI |
Serial | 1 * COM header internal |
The IR-receiver Rev. 5 by the german manufacturer Atric.
This IR-receiver is available for various types of serial ports. You have to know which type your is.
You have to buy 10 1-pin cables (reason later described according to problems with the IR-receiver).
I bought One-All-URC-7960 here
This shouldn't be a problem
But some annotation:
pcm.dmixer { type dmix ipc_key 1024 ipc_key_add_uid false ipc_perm 0660 slave { pcm "hw:1,3" rate 48000 channels 2 period_time 0 period_size 1024 buffer_time 0 buffer_size 4096 } } pcm.!default { type plug slave.pcm "dmixer" }
pcm.!default { type hw card 1 device 3 }
pcm.!default { type plug slave { pcm "hw:1,3" } }
Atric provide a very comprehensive manual ( German/English )
This Informations should help to connect the IR-Receiver to your board.
I have hit a board which make trouble. Power for the IR-board and train the power-on-signal was no problem (described in the manual).
But after I installed the IR-Receiver as described the media PC wasn't able to boot. Both LEDs turned on but nothing happen. This only when serial connected.
After some testing an some help from a colleague who has more experience with serial ports as I have we find the problem.
responsible for the trouble was the first pin.
This pin (DCD) is responsible for (Data) Carrier Detect (Wikipedia) and normally not essential for serial communication.
You can use the one-pin-cables which you can bought at the website of the IR-receiver. So the DCD-pin can be disconnected.
The IR-receiver will use this pin for transport the IR-signal. You have to change this by put the jumper to DSR as transport pin (lirc can be configured to use DSR pin to receive IR-signal).
I connect:
IR-Board | Mainboard (counting type of Jetway) |
---|---|
Pin 1 | not connected |
Pin 2 | Pin 2 |
Pin 5 | Pin 5 |
Pin 6 | Pin 6 |
Pin 7 | Pin 7 |
Pin 9 | Pin 9 |
Lirc is installed when you use the live installation of XBMC. Now I had to configure it but the kernel-module used by lirc expect the IR-signal on the DCD-pin which was disconnected. So I had to change this. After some reaearch I find a solution. Inside the c-code of the kernel-module there is the data-pin set to DSR when a special hardware model is selected. You can give the type to modprobe when you load the module.
Previously you have to free the serial port.
Now test:
/etc/init.d/lirc stop modprobe -r lirc_mceusb setserial /dev/ttyS0 uart none modprobe -v lirc_serial type=1 mode2 -d /dev/lirc1
Signals of your IR-Control should be appear as codes.
In /etc/lirc/hardware.conf you can configure which modules should be loaded when lircd starts here my version
# /etc/lirc/hardware.conf # #Chosen Remote Control REMOTE="Atric rev.5 IR Receiver" REMOTE_MODULES="lirc_serial" REMOTE_DRIVER="" REMOTE_DEVICE="/dev/lirc1" REMOTE_LIRCD_CONF="urc/urc-7960.conf" REMOTE_LIRCD_ARGS="" Chosen IR Transmitter TRANSMITTER="None" TRANSMITTER_MODULES="" TRANSMITTER_DRIVER="" TRANSMITTER_DEVICE="" 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="" REMOTE_SOCKET="" TRANSMITTER_SOCKET=""
Create /etc/modprobe.d/lirc.conf with the following content
install lirc_serial /bin/setserial /dev/ttyS0 uart none; /sbin/modprobe --ignore-install lirc_serial type=1
Reboot, and if I doesn't forget to mention anything it should work and the right modules should be loaded. Repeat the test with “mode2”.
Now lirc had to learn to interpret the signals of your ir-control The tool irrecord will help you. You only have to read and do what the program say. Or, if you had the same ir-control, you could use my config if you want.
/etc/init.d/lirc stop irrecord --device=/dev/lirc0 urc-7960
After that you have a config file. Thats my (orginal by M. Hippert → used as template) :
# 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(default) on Sun Feb 13 11:48:28 2011 # # contributed by AN orginal by M. Hippert # http://forum.team-mediaportal.com/fernbedienung-tastatur-ir-465/configfiles-fuer-girder-lirc-mit-oneforall-urc-7960-a-85801/ # # Lirc Receiver: Atric # model no. of remote control: ONE for ALL URC 7960 SmartControl # devices being controlled by this remote: Code for stb: Technisat: 1195 # # press and hold the magic-Key for 3 sec -> blue ring will light up 2x # select "stb" # enter code "1195" -> blue ring will light up 2x # # The keys PREVIEW, NEXT and "pop up X" failed # The keys with same code # Red & Rewind; Green & Stop; Yellow & Pause & Play; Blue & FastForward & 16:9; -/-- & list; back & Key-between-ChannelUp-and-ChannelDown # # Chance Code this keys: # * Press and hold the magic key for 3 sec. --> The Blue ring will light up 2x # * Press 9 9 4. --> The Blue ring will light up 2x # * Press and release the magic key. # * Enter the 5-digit magic-code # * dann die zu lernende Taste drücken # * Repeat all for the next key # # # *** Magic-Code *** # Die Tasten richtig fest druecken, ansonsten kann es vorkommen, dass Tasten # nicht angelernt werden obwohl der blaue Ring als Quittung blinkt # # Next 00240 # Preview 00627 # pop up X 00723 # Rewind 00560 # Stop 00243 # Pause 00720 # Play 00339 # FastForward 00563 # 16:9 00274 # list 00264 # back & Key-between-ChannelUp-and-ChannelDown ------> not changed # # brand: urc-7960 # model no. of remote control: # devices being controlled by this remote: # begin remote name MyRemote bits 13 flags RC5|CONST_LENGTH eps 30 aeps 100 one 927 838 zero 927 838 plead 934 gap 113492 toggle_bit_mask 0x800 begin codes BTN_BACK 0x1232 KEY_STOP 0x1236 KEY_NEXT 0x122E KEY_REWIND 0x122C KEY_PLAY 0x1235 KEY_FASTFORWARD 0x1234 KEY_LIST 0x022F KEY_PAUSE 0x1229 KEY_RECORD 0x1237 KEY_VOLUMEUP 0x1210 KEY_VOLUMEDOWN 0x1211 KEY_MUTE 0x120D KEY_CHANNELUP 0x1220 KEY_CHANNELDOWN 0x1221 KEY_BACK 0x1222 KEY_OK 0x0217 BTN_RIGHT 0x0216 KEY_UP 0x0210 KEY_DOWN 0x0211 BTN_LEFT 0x0215 KEY_YELLOW 0x022D KEY_RED 0x022B KEY_GREEN 0x022C KEY_BLUE 0x022E KEY_INFO 0x020F KEY_MENU 0x0212 KEY_TV2 0x122F BTN_1 0x1201 BTN_2 0x1202 BTN_3 0x1203 BTN_4 0x1204 BTN_5 0x1205 BTN_6 0x1206 BTN_7 0x1207 BTN_8 0x1208 BTN_9 0x1209 BTN_0 0x1200 end codes end remote
After including this into the /etc/lirc/lircd.conf and starting lirc you sould see the translated commands with irw
##urc-7960 include "/etc/lirc/urc-7960.conf"
/etc/init.d/lirc start
irw
Create an “Lircmap.xml” in your xbmc-data home.
touch ~/.xbmc/userdata/Lircmap.xml
The Documentation can be found here. After reboot XBMC should use the new file.
Here is my:
<lircmap> <remote device="urc-7960"> <start>KEY_SCREEN</start> <skipminus>KEY_BACK</skipminus> <stop>KEY_STOP</stop> <skipplus>KEY_NEXT</skipplus> <reverse>KEY_REWIND</reverse> <play>KEY_PLAY</play> <forward>KEY_FASTFORWARD</forward> <start>KEY_LIST</start> <pause>KEY_PAUSE</pause> <record>KEY_RECORD</record> <volumeplus>KEY_VOLUMEUP</volumeplus> <mute>KEY_MUTE</mute> <volumeminus>KEY_VOLUMEDOWN</volumeminus> <left>BTN_LEFT</left> <right>BTN_RIGHT</right> <up>KEY_UP</up> <down>KEY_DOWN</down> <select>KEY_OK</select> <pageplus>KEY_CHANNELUP</pageplus> <back>BTN_BACK</back> <pageminus>KEY_CHANNELDOWN</pageminus> <red>KEY_RED</red> <!-- HOME --> <myvideo>KEY_GREEN</myvideo> <mymusic>KEY_YELLOW</mymusic> <mypictures>KEY_BLUE</mypictures> <info>KEY_INFO</info> <title>KEY_MENU</title> <!-- CONTEX MENU --> <display>KEY_TV2</display> <!-- FULL SCREEN --> <mytv>KEY_MODE</mytv> <menu>KEY_ESC</menu> <back>BTN_BACK</back> <one>KEY_1</one> <two>KEY_2</two> <three>KEY3</three> <four>KEY_4</four> <five>KEY_5</five> <six>KEY_6</six> <seven>KEY_7</seven> <eight>KEY_8</eight> <nine>KEY_9</nine> <power>BTN_EXTRA</power> <zero>KEY_0</zero> </remote> </lircmap>
Perhaps you have to adapt the keymap for remote so that it fit to you wishes. The orginal is located in “/usr/share/xbmc/system/keymaps/”. You can copy it to ~/.xbmc/userdata/keymaps/ and edit it.
Have fun with the new remote-control.
And special thanks to seiichiro for his help.