Installation of Technisat SkyStar 2 DVB-S with serial remote into Mythbuntu 7.10

Wednesday, December 12th, 2007 by holdoway

There are a number of things that need to be configured correctly to get this remote working well with Mythbuntu. There are:

  1. Modifying the remote so that it sends discrete values for all keys.
  2. Installing lirc
  3. Configuring the remote
  4. Configuring lirc
  5. Configuring mythtv.

So, not the trivial task this niaive user expected to find! none of the steps are difficult, once you know what they are.

The remote

As delivered, the prog+/- and vol+/- keys send the same code as the 4 arrow keys, which I thought a bit of a con. Luckily there’s a pretty simple fix for this, requiring just a few seconds work with a soldering iron.

To split the case, remove the batteries, and then use a flat bladed screwdriver or knife blade and start at the bottom of the remote to split the top and bottom halves of the case.remove the pcb. Mine looks like this…

Remote

At the bottom end, you’ll see a single resistor, plugged in to JP1.

Before change

This needs to be unsoldered, and moved to JP2, which converts it from a TTS35AI remote into a 103TS103 remote.

Remote after

Reassemble the remote and you’re done. Note that the 4 buttons at the bottom of the remote ( 1 with a tick on it, and 3 unmarked ones ) will now not work. A small price to pay.

Ok, the rest is all software, you’ll be glad to hear. Plug the serial dongle into your machine, and…

Install lirc

Making sure you are connected to the internet, use the following comand to install the IR support for linux:

sudo apt-get update
sudo apt-get install lirc lirc-modules-source module-assistant setserial

( I would also recommend an apt-get upgrade at this time, just to get the latest versions of everything )

Configuring the remote

The next thing you need to do is to make a map file of the codes that are sent. To to this, you need to run the irrecord program.

irrecord -d /dev/lirc0 TTS35AI

This is a really tedious process, where you both need to read the operating instructions very carefully and press loads of buttons. To speed up this process, here’s the result:

# Please make this file available to others
# by sending it to
#
# this config file was automatically generated
# using lirc-0.8.2(default) on Mon Dec 10 16:50:34 2007
#
# This is the modded remote - resistor moved
# This provides for different codes for the vol+/- and prog+/-
# and the 4 arrow keys.
#
# contributed by: Steve Holdoway ( steve@greengecko.co.nz )
#
# brand: TechniSat
# model no. of remote control: TTS35AI
# devices being controlled by this remote: SkyStar 2
#

begin remote

name               TTS35AI
bits               13
flags              RC5|CONST_LENGTH
eps                30
aeps               100

one                937 840
zero               937 840
plead              959
gap                113825
toggle_bit_mask    0x800

begin codes
1              0x1201
2              0x1202
3              0x1203
4              0x1204
5              0x1205
6              0x1206
7              0x1207
8              0x1208
9              0x1209
0              0x1200
MUTE           0x120D
POWER          0x120C
RED            0x022B
GREEN          0x022C
YELLOW         0x022D
BLUE           0x022E
UP             0x0210
DOWN           0x0211
LEFT           0x0215
RIGHT          0x0216
OK             0x0217
SFI            0x122F
EXIT           0x1222
INFO           0x020F
PROG+          0x1220
PROG-          0x1221
TV/RADIO       0x0213
MENU           0x0212
VOL+           0x1210
VOL-           0x1211
HELP           0x0200
TXT            0x123C
STOP           0x1229
EXT            0x1238
end codes

end remote

This file needs to be placed in the /usr/share/lirc/remotes/technisat directory, named TTS35AI, so you’ll need to

sudo cp TTS35AI /usr/share/lirc/remotes/technisat

to place it there.

Configuring lirc

We need to ensure that the hardware configuration for lirc is set up to reflect what’s installed, and the bits needed to run it… this is stored in the file /etc/lirc/hardware.conf which needs to contain:

# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="Technisat TTS35AI"

# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#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

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER=""
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead
DEVICE="/dev/lirc0"
MODULES="lirc_dev lirc_serial"

# Default configuration files for your hardware if any
LIRCD_CONF="technisat/TTS35AI"
LIRCMD_CONF=""

This is a system file, so you’ll need to use sudo to modify it.

Also, the autostart script for lirc needs to be modified slightly to ensure that the serial port is configured correctly for the IR receiver. To do this, you need to edit the system file /etc/init.d/lirc as follows ( I’m using instructions for the vi editor – / = find, O – Capital o = Open blank line above, ESC = escape key, RETURN = return key, but please use your editor of choice ), and I’m assuming that you’re using the first serial port:

sudo cp /etc/init.d/lirc /etc/init.d/lirc.save
sudo vi /etc/init.d/lirc

/for mod inRETURN
O          /bin/setserial /dev/ttyS0 uart noneESC:wqRETURN

The load_modules function should now read

load_modules ()
{
local MODULES_MISSING=false

/bin/setserial /dev/ttyS0 uart none
for mod in $*
do
/sbin/modprobe -k $mod 2> /dev/null || MODULES_MISSING=true
done

if $MODULES_MISSING; then
echo "#####################################################"
echo "## I couldn't load the required kernel modules ##"
echo "## You should install lirc-modules-source to build ##"
echo "## kernel support for your hardware. ##"
echo "#####################################################"
echo "## If this message is not appropriate you may set ##"
echo "## LOAD_MODULES=false in /etc/lirc/hardware.conf ##"
echo "#####################################################"
START_LIRCMD=false
START_LIRCD=false
fi

if test -x /sbin/udevsettle && [ ! -z $3 ] && [ $3 != "udev" ];
then
if ! /sbin/udevsettle; then
echo "timeout waiting for devices to be ready"
fi
fi
}

with the setserial line added. Start up the lirc daemon manually ( it’s controlled by udev, but we want to be sure it’s done now.

sudo /etc/init.d/lirc stop
sudo /etc/init.d/lirc start

( I prefer to do this than a single restart – the time delay between the two commands sometimes makes a difference )

(Finally!) Configuring mythbuntu!

One last file to modify, and then the mythbuntu can be configured. Woo hoo. We need to add the definition of this remote into the menu system for mythbuntu so that you can select it. Once again I’m using vi…

sudo cp /usr/share/lirc/lirc/hwdb /usr/share/lirc/lirc.hwdb.save
sudo vi /usr/share/lirc/lirc/hwdb
/Tekram M230 Mach64RETURN
OTechnisat TTS35AI;serial;lirc_dev lirc_serial;hw_default;technisat/TTS35AI;ESC:wqRETURN

(Ignore any line breaks in the above line, it is a single line! ). This part of the database will now look like

Technisat MediaFocus I;mediafocusI;none;hw_default;technisat/lircd.conf.mediafocusI;

Technisat TTS35AI;serial;lirc_dev lirc_serial;hw_default;technisat/TTS35AI;

Now, if you return to mythsetup and hit the remote control button, then this option is now on the list…

Mythbuntu Select

If you also tick the ‘Generate dynamic button settings’ option before hitting ‘Apply’, then everything should work fine!