Difference between revisions of "Dell 2300MP RS-232 Remote Control"

From MythTV Official Wiki
Jump to: navigation, search
m (Software: updated gding link to mythdora address)
m (Software: update per MythDora5 install, was per MythDora4)
Line 9: Line 9:
  
 
===Software===
 
===Software===
To start you will need lircd and irexec installed and working. (Note in Fedora Core 6 you need to create /etc/irexec.conf see http://mythdora.com/?q=node/1679#comment-13201 for more infomation)
+
To start you will need lircd and irexec installed and working. (Note in Fedora Core 6 you need to create /etc/irexec.conf see http://mythdora.com/?q=node/1679#comment-13201 for more infomation)  
  
Then install pyserial
+
I've updated to MythDora5 w/ FC8 and the below works great.
 +
 
 +
install pyserial
  
 
  # yum -y install pyserial
 
  # yum -y install pyserial
Line 82: Line 84:
 
     print 'resync'
 
     print 'resync'
  
#A debug command. May be handy is you impliment an unlisted command
+
#A debug command. May be handy if you impliment an unlisted command
 
#print sys.argv[1:]
 
#print sys.argv[1:]
  
Line 113: Line 115:
 
  # /usr/local/bin/projector -power
 
  # /usr/local/bin/projector -power
  
And either turn on the projector, or get a pop up on the display. Once you have that then it's time to link it with your remote via irexec and lircd. Add the following to your users lirc file. In my case it was
+
And either turn on the projector, or get a pop up on the display. Once you have that then it's time to link it with your remote via irexec and lircd. Once that works your in good shape. You can now with a command prompt command the projector. Now to run the script from the remote.
 +
 
 +
Add the following to your users lirc file and irexec.conf file. In my case it was
  
 
  # emacs /home/mythtv/.lircrc
 
  # emacs /home/mythtv/.lircrc
  
It might be under /home/mythtv/.mythtv/lircrc many have them linked together.
+
and
 +
 
 +
# emacs /etc/irexec.conf
  
 
<pre><nowiki>
 
<pre><nowiki>
 +
 +
### added for dell projector
  
 
begin
 
begin
Line 134: Line 142:
 
config = projector -resync
 
config = projector -resync
 
end
 
end
 +
 +
### end added for dell projector
  
 
</nowiki></pre>
 
</nowiki></pre>
  
Once you have done this, you should now be able to use the remote to control the projector.  
+
irexec.conf doesn't exist, you have to create it. If you don't create it irexec doesn't seem to start reliably.
 +
 
 +
In lircrc don't forget to comment out the original Power and Green sections.
 +
 
 +
Your lircrc might also be under /home/mythtv/.mythtv/lircrc many have them linked together.
 +
 
 +
Either reboot, or run this
 +
 
 +
# service lircd restart
 +
Stopping infrared command execution daemon:                [  OK  ]
 +
Stopping infrared remote control daemon:                  [  OK  ]
 +
Starting infrared remote control daemon:                  [  OK  ]
 +
Starting infrared command execution daemon:                [  OK  ]
 +
 
 +
You need to see the command execution has started OK.
 +
 
 +
Once you have done this, you should now be able to use the remote to control the projector. Reboot to make sure it all works and you should be good to go.  
  
 
Enjoy.
 
Enjoy.

Revision as of 11:24, 1 June 2008

This is a guide for setting up the RS232 control for a Dell 2300MP projector on a Fedora Core 6 MythTV box with a remote controlled by irexec and lircd, via a script called with a switch.

Introduction

I've got a 2300MP with no remote, and wanted to control all my devices with one remote. So I included the projector controls with my MythTV setup. I'm posting my results here so that others can interface thier device in a similar manner. I implimented power on, power off and resync. More features can be easily added if one wants to add to the script.

Instructions

Hardware

There are three electrical connections from the serial port to the projector RX, TX and GND. The RX from the projector is connected to the TX of the computer. The TX from the projector is connected to the RX on the projector. Ground is connected to ground. I made my cable from chopping off an old keyboard with a PS2 connector on it. Then I crimped on the DB9 on the other end. I'm sure one can probably purchase one of these, as serial mice used to be popular.

Software

To start you will need lircd and irexec installed and working. (Note in Fedora Core 6 you need to create /etc/irexec.conf see http://mythdora.com/?q=node/1679#comment-13201 for more infomation)

I've updated to MythDora5 w/ FC8 and the below works great.

install pyserial

# yum -y install pyserial

I only chose to impliment a handful of the features found at

http://support.dell.com/support/edocs/acc/2300MP/en/specs.htm

I found the recommended power sequence was incorrect. The command Dell claims is for power is in fact for the menu. Also the Commands seem to be reversed some times, but it works none the less. Also also, the power off command doesn't appear to work, I had to use the power command twice separated by about a second or so to make the projector go off. I do this by pressing the remote control button twice.

To control the projector via command line, I created the following script

# emacs /usr/local/bin/projector

#!/usr/bin/python
import sys              #allows you to capture the command switches
import serial           #get serial features for python
import time             #perhaps I don't need this. I think it was just extra for a time test once.

#this next line sets up the serial port to allow for communition and opens the serial port.
#you may need to change ttyS0 to S1, S2, ect. The rest shouldn't need to change.
ser = serial.Serial('/dev/ttyS0', 19200, 8, serial.PARITY_NONE, serial.STOPBITS_ONE, xonxoff=0, rtscts=0, timeout=1) 

H = "\xBE\xEF"       #these are always the same
AC = "\x10"
SoP = "\x05\x00"
ID  = "\x11\x11"
SoM = "\x01\x00"

#The CRC and the COMMAND change from serial command to serial command. 
#This is a table that allows for easier visual checking
CRC = "nope"         #default CRC is bogus
CRCpwr = "\xC6\xFF"
CRCmen = "\xC7\xBF"
CRCrsy = "\xc4\x7f"
CRCasp = "\x08\x7e"
CRCoff = "\x0C\x3E"
CRCfir = "\x12\x3e"

COMMAND = "nope"    #default COMMAND is bogus
COMMANDpwr = "\x01" #2300MP worked
COMMANDmen = "\x02" #2300MP worked
COMMANDrsy = "\x07" #2300MP worked
COMMANDasp = "\x17" #2300MP worked
COMMANDoff = "\x18"
COMMANDfir = "\x30"


#Now to correct the bogus CRC and COMMAND sequences
if sys.argv[1:] == ['-power'] :
    CRC = CRCpwr
    COMMAND = COMMANDpwr
    print 'power'
    
if sys.argv[1:] == ['-menu'] :
    CRC = CRCmen
    COMMAND = COMMANDmen
    print 'menu'
    
if sys.argv[1:] == ['-aspect'] :
    CRC = CRCasp
    COMMAND = COMMANDasp
    print 'aspect ratio'

if sys.argv[1:] == ['-resync'] :
    CRC = CRCrsy
    COMMAND = COMMANDrsy
    print 'resync'

#A debug command. May be handy if you impliment an unlisted command
#print sys.argv[1:]

#This is when it actually writes the command to the serial port. 
#This probably could be combined to one line, but I din't bother once I got it working.
ser.write(H)        #Write projector command
ser.write(AC)       
ser.write(SoP)     
ser.write(CRC)   
ser.write(ID)       
ser.write(SoM)     
ser.write(COMMAND)  

#Some commands like firmware may require you to capture the data, so I'm leaving this here.
#s = ser.read(10000) #read up to x bytes (timeout)
#print s

#all done now close the port.
ser.close()         #close serial port

Don't for get to make it executable

# chmod 755 /usr/local/bin/projector

I checked that I had at least gotten the PC listening to the projector by modifying the above to put what ever it heard on standard out. After I had confirmed the projector could talk to the PC, I confirmed the PC could transmit by bridging the TX and RX pin on the connector for the projector, then sent info to ttyS0, when it echoed back, it meant I had good connections.

Now to you should be able to run the command

# /usr/local/bin/projector -power

And either turn on the projector, or get a pop up on the display. Once you have that then it's time to link it with your remote via irexec and lircd. Once that works your in good shape. You can now with a command prompt command the projector. Now to run the script from the remote.

Add the following to your users lirc file and irexec.conf file. In my case it was

# emacs /home/mythtv/.lircrc

and

# emacs /etc/irexec.conf

### added for dell projector

begin
prog = irexec
button = Power
repeat = 3
config = projector -power
end

begin
prog = irexec
button = Green
repeat = 3
config = projector -resync
end

### end added for dell projector

irexec.conf doesn't exist, you have to create it. If you don't create it irexec doesn't seem to start reliably.

In lircrc don't forget to comment out the original Power and Green sections.

Your lircrc might also be under /home/mythtv/.mythtv/lircrc many have them linked together.

Either reboot, or run this

  1. service lircd restart

Stopping infrared command execution daemon: [ OK ] Stopping infrared remote control daemon: [ OK ] Starting infrared remote control daemon: [ OK ] Starting infrared command execution daemon: [ OK ]

You need to see the command execution has started OK.

Once you have done this, you should now be able to use the remote to control the projector. Reboot to make sure it all works and you should be good to go.

Enjoy.

Here are some additional scripts I found handy for trouble shooting, couldn't find the remote, ect.

# emacs /usr/local/bin/projector-on.sh
#! /bin/sh
/usr/local/bin/projector -power
# emacs /usr/local/bin/projector-off.sh
#! /bin/sh
/usr/local/bin/projector -power; sleep 2; /usr/local/bin/projector -power

And of course don't forget this

# chmod 755 /usr/local/bin/projector-on.sh
# chmod 755 /usr/local/bin/projector-off.sh