Script - SKY channel changer

From MythTV Official Wiki
Revision as of 21:50, 18 November 2005 by (Edit performed by

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

SKY Channel Changer

Here's a channel changer script for Sky in the UK. It cooperates with ../Sky Dog Remover Script.

My box occasionally misses a digit so this is thorough:

  • send a couple of BACKUPS to clear things out.
  • wait a second
  • do it again
  • sleep 2 seconds to let the channel change happen
  • send a couple of BACKUPs to clear the show info banner
#!/usr/bin/perl -w

use ir;

my $chan=join(" ", split(//,$ARGV[0]));

get_lock || die "No lock : $!\n";

print "Sending $chan\n";
system "irsend SEND_ONCE SKY BACKUP BACKUP $chan";
sleep 1;
sleep 1;
system "irsend SEND_ONCE SKY BACKUP BACKUP $chan";
sleep 2;
system "irsend SEND_ONCE SKY BACKUP";


I install this as /usr/local/bin/change_channel

It uses

# a couple of useful utility functions for locking during IR activity
use Fcntl;

my $MAX_TRIES = 10;
my $LOCK_FILE="/tmp/ir_lock";

sub get_lock() {
  my $tries = 0;
  while (-f $LOCK_FILE && $tries < $MAX_TRIES ) {
    sleep 1;
    $tries ++;
  return 0 if $tries == $MAX_TRIES ;
  sysopen(IR_LCK, $LOCK_FILE, O_RDWR | O_EXCL | O_CREAT) || return 0;
  return 1;

sub clear_lock() {
    close IR_LCK;


This is installed as /usr/local/lib/site_perl/

Ask if you have any problems --David Greaves