Reciva Radio Modifications

10-Sep-08

This is a modification to the Reciva radio system to enable remote control via irsend (a LIRC utility). Currently I am able to control the radio via the command line, or using the tkremote application.

You need to already have patched your radio with the Sharpfin patch, to enable login. You also need to be familiar with the Linux shell environment and able to configure and build packages. If you're not, you can download the stuff that I built, but it's likely to be a bit old.

Files: everything's in a 'tarball' at present. This file contains my patch to tkremote and.. and.. other things .. fill this in later!

reciva-remote.tar.gz
MD5SUM of the reciva-remote.tar.gz file
File listing

I'm a bit lazy with documentation, so here's a copy of an email that I recently sent to the Sharpfin mailing list. It should explain what I've modified and what needs to be done.

Date: 	Wed, 10 Sep 2008 12:04 AM
From: 	"Lex Landa" (brooknet .. at.. imap .. dot ..cc)
To: 	"sharpfin" (sharpfin .. at .. googlegroups dot com)
Subject: 	sharpfin - Reciva radio remote control


Hi,

I'm sending this message in case anyone else is working on this.  I
decided to take on the challenge of controlling a Reciva radio (mine's a
Magicbox Imp - config 1019) remotely.  It's working for me, though my
solution is a bit messy.  If you choose to follow this - and someone
hasn't already done it - then be very careful.

'Mini HOWTO':

1. Compile a recent (0.8.3) version of lircd for the ARM using the
crosstool 0.42/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu-gcc.  In lircd.c,
enable SIMULATE mode by setting 'int allow_simulate=1;' (line 174 in my
lircd.c 0.8.3).

2. Upload this to the radio using nc.  My replacement lircd is called
'/usr/sbin/lircd-r'.

3. Mount the filesystem rw.
  mount / -o rw,remount

4. Back up the original lircd:
  mv /usr/sbin/lircd /usr/sbin/lircd.orig

5. Edit radio config:
  cd /root/hwconfig
  cp -p configNNNN.txt configNNNN.txt.bak (replace 'NNNN' with your
  hardware number)
  vi configNNNN.txt and add the following at the bottom, if it's not
  present:

LIRC Module: /root/lirc_dev.o      
LIRC Module: lirc_barracuda

I don't know if these modules are necessary: my radio doesn't have an IR
receiver.  I just needed the ir application to start lircd, which it
might do anyway?

6. A simple shell wrapper to replace /usr/sbin/lircd:

cat > /usr/sbin/lircd <<EOF
#!/bin/sh
/usr/sbin/lircd-r -d /dev/lirc/0 -l
EOF

chmod 755 lircd

(this discards arguments passed to it - probably not a good thing, but I
didn't want the ir application to change anything)

7. Remount the root filesystem r/o.
  mount / -o ro,remount

8. Reboot the radio.

9. Control the radio with irsend:

irsend -a <radio IP address> SIMULATE "0000000000000000 00 <KEY> 00"

'<KEY>' = a command from /etc/lircd.conf - 'C' = preset 1, 'D' = preset
2, 'O' = power, 'U' = volume up, 'V' = volume down, etc.

An example:

irsend -a radio.localnet SIMULATE "0000000000000000 00 C 00"

These commands are in /etc/lircd.conf and
/etc/config/lircd_configNNNN.conf where 'NNNN' is the hardware number.

Can anyone confirm the following, please?

/usr/bin/start_lircd.sh seems to be ignored by the ir application.
The lircd config /etc/lircd.conf is present but seems to also be
ignored.

I'm going to hack up some sort of Javascript thing to replace the
buttons in the Sharpfin webserver screen with functioning buttons.
It'll take me a while as my Javascript is ropey to say the least.

I hope this helps a bit.

Cheers,

Lex
I've since decided that Javascript won't be up to this, since it doesn't allow you to call external scripts. I am currently using the 'tkremote' TCL/TK application to control the radio. It's not pretty but it works. I needed to patch the app a little (patch contained in the above file).

Links: Sharpfin
Internet Radio Exploration