Comment 2 for bug 138247

Revision history for this message
Tom G (tagra123) wrote :

I have a post in the ubuntu forum relating to this.

I was able to get it to work in feisty to drive a homemade ir blaster.

Here's what I did:

HOW TO MYTHTV LIRC SERIAL IRBLASTER

Making lirc work in any version of Ubuntu seems more difficult than necessary.

This has been adapted from another how to located here:

http://losdos.dyndns.org:8080/public...ting_LIRC_Make

The above post and version did not work on feisty --

Heres how to create ledxmit on Feisty:

Here it is.

Before starting make sure some necessary utilities are installed:

Code:

sudo apt-get install build-essential
sudo apt-get install linux-headers-`uname -r`
sudo apt-get install setserial

INSTALLING

Get LIRC version 0.8.2 from the LIRC download page
Code:

cd ~
 mkdir myth-ledxmit ; cd myth-ledxmit
 wget http://internap.dl.sourceforge.net/sourceforge/lirc/lirc-0.8.2.tar.bz2
 bzip2 -d *bz2 ; tar xf *tar

Create this shell script that will create a new version of lirc called ledxmit that is independent of the regular lirc.

gedit ~/myth-ledxmit/myth-ledxmit82-feisty.sh

cut and paste the following into the file
Code:

#!/bin/bash
#
# myth-ledxmit.sh
#
# by jds-myth !at! losdos.dyndns.org
# portions by rwraithr !at! iwamble.net
#
# for details on how and why to use this script, see
# http://losdos.dyndns.org:8080/public/mythtv-info/MythTV_DISH_IR_LED_TX_via_Modified_LIRC.html
#
set -e
#
#
if [ ! $# -eq 1 ]
then
  echo "usage: $0 lirc-directory"
  exit 1
fi

if [ ! -d $1 ]
then
  echo "error: directory '$1' not found."
  exit 1
fi

rm -rf myth-ledxmit.WIP
echo "$0: Copying lirc source directory..."
cp -r $1 myth-ledxmit.WIP

cd myth-ledxmit.WIP
if [ $? -ne 0 ]
then
  echo "error: unable to cd to 'myth-ledxmit.WIP'."
  exit 1
fi

echo "$0: Moving lirc directories"
mv ./drivers/lirc_atiusb ./drivers/ledxmit_atiusb
mv ./drivers/lirc_mceusb ./drivers/ledxmit_mceusb
mv ./drivers/lirc_bt829 ./drivers/ledxmit_bt829
mv ./drivers/lirc_dev ./drivers/ledxmit_dev
mv ./drivers/lirc_gpio ./drivers/ledxmit_gpio
mv ./drivers/lirc_i2c ./drivers/ledxmit_i2c
mv ./drivers/lirc_it87 ./drivers/ledxmit_it87
mv ./drivers/lirc_parallel ./drivers/ledxmit_parallel
mv ./drivers/lirc_serial ./drivers/ledxmit_serial
mv ./drivers/lirc_sir ./drivers/ledxmit_sir
mv ./drivers/lirc_sasem ./drivers/ledxmit_sasem
mv ./drivers/lirc_igorplugusb ./drivers/ledxmit_igorplugusb

# lirc 0.7.2 adders
mv ./drivers/lirc_imon ./drivers/ledxmit_imon
mv ./drivers/lirc_streamzap ./drivers/ledxmit_streamzap
mv ./drivers/lirc_cmdir ./drivers/ledxmit_cmdir
mv ./drivers/lirc_mceusb2 ./drivers/ledxmit_mceusb2

# lirc 0.8.2 adders
mv ./drivers/lirc_ttusbir ./drivers/ledxmit_ttusbir

echo "$0: Moving lirc files"
find . -name '*lirc*' -print > lircfiles.txt
for i in `cat lircfiles.txt`
  do
    if [ -f $i ] ; then
    NewFileName=`echo $i | sed 's/lirc/ledxmit/'`
    mv $i $NewFileName
  fi
done

echo "$0: Renaming lirc vars in files"
find . | xargs grep -l lirc > lircvars.txt
for i in `cat lircvars.txt`
  do
if [ -f $i ] ; then
    cat $i | sed 's/lirc/ledxmit/g' > $i.newfile
    mv $i.newfile $i
  fi
done

echo "$0: Renaming LIRC vars in files"
find . | xargs grep -l LIRC > LIRCvars.txt
for i in `cat LIRCvars.txt`
  do
    if [ -f $i ] ; then
    cat $i | sed 's/LIRC/LEDXMIT/g' > $i.newfile
    mv $i.newfile $i
  fi
done

echo "$0: Restoring exec permissions"
chmod +x ./configure ./*.sh

# while the following configure statement makes the default port COM2 (= /dev/ttyS1),
# there are examples later in this document which show how to tell the driver that you
# in fact want to use COM1 (=/dev/ttyS0) instead.

echo "$0: Running configure"
./configure --program-prefix=ledxmit- --prefix=/usr/local/lirc-ledxmit \
  --with-major=72 --with-port=0x2f8 --with-irq=3 --with-transmitter \
  --enable-sandboxed --with-driver=serial

echo "$0: Running make"
make
echo "$0: Complete"

Make it executable
Code:

chmod 755 ~/myth-ledxmit/myth-ledxmit82-feisty.sh

Run the script
Code:

~/myth-ledxmit/myth-ledxmit82-feisty.sh lirc-0.8.2

Change to the myth-ledxmit.WIP directory
Code:

cd ~/myth-ledxmit/myth-ledxmit.WIP

Install
Code:

sudo make install

NOTE: All of the newly created LIRC executables are copied by "make install" to a separate tree under /usr/local/lirc-ledxmit.
No MythTV nor Linux configuration files are changed during this process.

SETTING UP

CREATE /etc/ledxmit.conf will need to be setup with your remote codes

see this link http://lirc.sourceforge.net/remotes/

You can create your own if your cable or sat box is not listed.

Mine was a visonetics and contains the following:
Code:

#
# this config file was automatically generated
# using WinLIRC 0.6.5 (LIRC 0.6.1pre3) on Thu Apr 20 00:35:35 2006
#
# contributed by Tom Graham
#
# brand: Visionetics
# model:
# supported devices:
#

begin remote

  name visionetics
  bits 16
  flags SPACE_ENC
  eps 25
  aeps 100

  header 8972 4550
  one 538 586
  zero 538 1716
  ptrail 538
  repeat 8986 2284
  pre_data_bits 16
  pre_data 0x9E29
  gap 40153
  toggle_bit 0

      begin codes
          1 0x0000000000007F80
          2 0x000000000000BF40
          3 0x0000000000003FC0
          4 0x000000000000DF20
          5 0x0000000000005FA0
          6 0x0000000000009F60
          7 0x0000000000001FE0
          8 0x000000000000EF10
          9 0x0000000000006F90
          0 0x000000000000AF50
          ok 0x0000000000008F70
          volup 0x00000000000047B8
          voldown 0x000000000000F708
          chup 0x00000000000017E8
          chdown 0x00000000000037C8
          mute 0x00000000000057A8
          exit 0x000000000000CF30
          power 0x000000000000B748
      end codes

end remote

Create /etc/modutils/lirc-ledxmit

Code:

sudo gedit /etc/modutils/lirc-ledxmit

Insert the following for COM2 Serial IR Blaster
Code:

# FILE: /etc/modutils/lirc-ledxmit
alias char-major-72 ledxmit_serial
below ledxmit_serial ledxmit_dev
# !!! note DEFAULT is COM2 !!!
# for COM1, simply uncomment the following:
# options ledxmit_serial irq=4 io=0x3f8
# for COM2, do nothing, or uncomment the following:
 options ledxmit_serial irq=3 io=0x2f8

Save the file

Add the new modules list

Code:

sudo /sbin/update-modules

Make the device node
Code:

sudo /bin/mknod /dev/ledxmit c 72 0

Disable the regular serial port driver
Code:

sudo /bin/setserial /dev/ttyS1 uart none # (IS for COM2 use /dev/ttyS0 for COM1)

Install the ledxmit_serial module:
Code:

sudo /sbin/modprobe ledxmit_serial

Make sure it's working
Code:

sudo lsmod | grep ledxmit

you should see the following:

ledxmit_serial 7104 0
ledxmit_dev 8560 1 [ledxmit_serial]

Start up the ledxmit daemon
Code:

sudo /usr/local/lirc-ledxmit/sbin/ledxmit-ledxmitd -L /tmp/ledxmitd.log

(this starts the deamon ledxmitd and creates a listening socket at /dev/ledxmitd)

Verify both ledxmit-related devices are now present and have the proper attributes:
Code:

ls -sl /dev/led*

you should see:

0 crw-r--r-- 1 root root 72, 0 May 4 20:57 /dev/ledxmit
0 srw-rw-rw- 1 root root 0 May 4 20:57 /dev/ledxmitd

Create startup scrit
Code:

sudo gedit /etc/startledxmit.sh

Insert the following into itL
Code:

/sbin/update-modules
/bin/mknod /dev/ledxmit c 72 0
/bin/setserial /dev/ttyS1 uart none # use this for COM2
/bin/setserial /dev/ttyS1 uart none # (or use /dev/ttyS0 for COM1)
/sbin/modprobe ledxmit_serial
/usr/local/lirc-ledxmit/sbin/ledxmit-ledxmitd -L /tmp/ledxmitd.log

save the file and exit gedit

Make it executable
Code:

sudo chmod 755 /etc/init.d/startledxmit.sh

Set the script to start
Code:

sudo gedit /etc/rc.local

add the following line before exit 0

Code:

/bin/sh /etc/init.d/startledxmit.sh

save the file and exit gedit

TEST IT

This is assuming you have a visionetics remote devicedescribed in /etc/ledxmit.conf

The command below would turn a visionetics device on or off

Code:

/usr/local/lirc-ledxmit/bin/ledxmit-irsend SEND_ONCE visionetics power

Your remote device will be different so adjust the above command

see also
google for irsend for syntax

Change Channel Script.

To get MythTv to use the Blaster create a change channel script. --> See it here:http://losdos.dyndns.org:8080/public...ting_LIRC_Make