RX-V2400 Server

Software to control the Yamaha RX-V2400 home theater receiver.

Written using really wicked Perl which automatically creates documentation for the online command help.



Change Log:


The program needs to be threaded in order to deal with connections from multiple sources. It is intented that this will include one thread running the serial connection who will respond to requests from the other threads servicing network connections.
Check for closed client
The program would crash when attempting to write status to a closed client. This has been fixed.

Future Plans:

Read Status From Reponse Reports
The device sends data back in response to operations. This would be useful to keep in sync with any changes made via the IR remote control or front panel. Basic support is in the code but not used because it causes problems.

Run As Service
In order to really be useful, the program needs to conform to the Linux methodology. This will involve starting the serial back-end as a /etc/rc.X service and launching the network service threads through inetd. The back-end should launch network service threads as needed if inetd is not in use for the sake of not requiring inetd and supporting Windows.

Scheduled Tasks
Allow the user to schedule operations to be performed at specific times. Currently the user must instruct the program to sleep for an amount of time which will put them at the desired moment. This depends upon Threaded support above, as the implementation will be to start a new thread, perhaps through a network connection, which will sleep until the desired time and then execute it's instruction. Logging of scheduled tasks should also be performed so that they may be recovered if the service or system were restarted.

Web Interface
While this program is functional already, a web interface would improve the user experience and make the program more accessible.

Web Interface For Small Screens
A sort of Pocket Remote interface for mobile devices.

Canceled Plans:

User-Friendly Telnet Interface
The included telnet interface allows no use of the arrow keys to recall previous commands or edit the current command. While I once thought support for such would be helpful until I get around to creating a proper front-end, I have since decided that it is not of value to me. Partially-completed code is present in the current revision of the source.


I am currently using this for general control of the receiver as well as a smart alarm clock. When the "wakeup" macro in the included examples is run, my bedroom speakers turn on, volume is set to -50db with audio input from the HTPC. The HTPC then loads my "wakeup" playlist and plays for four minutes, the first two of which the volume is slowly increased to -30db. After these four minutes the playlist is switched to a more abrasive selection to make sure I'm awake. Two minutes later, the speakers in the rest of the house are turned on and all zones switched to receive input from the radio tuner, where they stay for an hour and a half before everything is automatically turned off.


 Feel free to contact me me at [ Click here to reveal. ]