By Nature, IR can't send data back to the system, the system can only transmit.
This means that if devices in IR change their state, it will be unknown to the rest of the system.
Also, it is often a hit or miss if an IR device supports discrete codes for things like switching on/off power or switching between inputs. This means, that when the system's router reloads, any internal notions of a device's state will be forgotten.
Say you have a Westinghouse SK-26H240S TV. This TV is IR, and it only has toggle power on/off codes.
TV is on, LinuxMCE thinks TV is on because it turned the TV on when you tapped an orbiter or remote.
Now, for some reason, router gets reloaded.. This could be a system reboot, or a quick reload router, whatever. TV is still on.
LinuxMCE resets its internal state. It thinks all the A/V devices are off.
You tap a remote or orbiter.
LinuxMCE thinks, "Oh! Need to turn on the TV."
so it sends a TOGGLE POWER command to the TV via IR.
TV, still on, recieves the toggle... and guess what? it turns off.
Little hiccups like this.. Which, really aren't our fault, but are due to the nature of how IR works.
With RS-232, there are discrete codes for every command, and furthermore, the state of the system can be reported back. So if you turn on the TV or amp, and switch inputs on the amp, etc, if the amp returns this information and the device template is configured to parse it, LinuxMCE will react to it (oh, he flipped to the VCR input, select the VCR media button on the orbiter and turn on the TV etc.)
This is all due to the intelligent nature of LinuxMCE's pipes system.
However for this to work, the device driver needs to be written for a given amplifier, and all of the inputs and outputs need to be specified in detail, so that LinuxMCE can make intelligent decisions on what commands to send to achieve a desired result.
Of all of the device templates, the one for the Yamaha RX-Vxx00 templates is the most complete. It has full bidirectional control in the template, and all of its inputs are defined correctly, so LinuxMCE can switch between them nicely. Since an amplifier is not a high speed device, the template's commands can be written entirely in ruby.
Hopefully, this makes things a bit more clear,