Well, that extra info didn't help. Either my HD300 is hosed, or the documentation is incomplete, or I'm an idiot. I am often an idiot, but I have extensive experience in device control, so I don't think I'm missing anything obvious. It will not change channels no matter what I do, so clearly the documentation is incorrect on that particular command, or at least something is not being stated that would indicate why it shouldn't work in some circumstances.
I can get power on/off, remote keys, get date/time (though what that data means isn't clear),.
Get channel fails, not in a communciations sort of way, it just always puts out 0x20 0x00 0x00 0x01 F5, so it puts out 4 bytes, as expected, but they are junk and the F5 indicates the command failed.
Set channel just puts out an F0 (indicating it's waiting for something), no matter what I send it. If I subsequently send something else, that will get picked up as the rest of the message, and some huge channel number will get set. But if I put out anything else along with the message itself, any number of bytes, it will still just sit there and wait.