tl;dr: if you’ve read all the references and still can’t get your Harmony or other universal remote to wake up a computer, make sure you use the Media Center Extender or Media Center Keyboard device profile in the Harmony software.
One of the feelings that almost makes up for all the hassle that comes with building your own infrastructure is the one you get when that last little bit of a jigsaw puzzle finally fits into place.
So that Harmony remote I talked about recently is hooked up to (among other things) my HTPC box. The HTPC box has been one of my more succesful hardware purchases: I’ve had it running ever since that blog post, and it’s just great, really. XBMC and OpenElec are great projects.
Ever since I set it up, I’ve used a janky USB infrared receiver I got off eBay to control it. It worked fine for a long time, but one thing that never quite worked was that I couldn’t manage to suspend and resume the system from the remote. I can’t recall whether it was on or off that didn’t work with the old one, but one didn’t. I just had to control the power manually, which really isn’t that big of a deal but ate away at me inside, leaving me a hollow, hollow man.
So that receiver started packing up recently; it’d frequently get stuck repeating keys, or just not register when it was plugged in, throwing USB errors in the kernel logs. So I chucked it and replaced it with a ‘genuine’ MCE remote transceiver, a Philips OVU4120 (much like this newer model). I say ‘genuine’ because I bought it off eBay, so who knows, but hey. I set it up with the Philips profile for the Harmony remote, and everything worked fine (as long as I stick the transceiver on a shelf and point it at the wall…yeah, IR is weird), then I thought “hey, maybe on/off from the remote will finally work now!”
Then I tried it, and was a sad bunny when it didn’t. I could suspend the system from the remote, but not wake it up.
Now this is one of those topics where if you DuckDuckGo it, you’ll find some possibly relevant information, and an awful lot of woo-woo. A fairly typical page is this one. I don’t think there’s a lot of woo-woo there, but input from kernel folks who know what the stuff that’s being cargo culted there actually does would be welcome. It does seem like poking
/sys/blahblahblah/power/wakeup is sometimes necessary for some folks, to enable wake-from-USB at the kernel level for the relevant USB host interface. I suspect the
usbcore.autosuspend reference is ancient now, but I couldn’t say for sure.
None of that applied to me, though. All the entries in
/sys that could possibly be the port which my transceiver was plugged into were definitely set to enabled. I could wake up just fine with a USB keyboard plugged into the same port. I had all the even-possibly-relevant firmware settings I could find set to ‘yes please let me wake up thank you very much’. I had XBMC configured appropriately: wake from actual power-off is rarely going to work, so you want to configure XBMC to suspend when it’s told to shut off; that setting is in System / Settings / System / Power saving / Shutdown function, set it to Suspend. Everything seemed to be pointing to Go, yet my remote obstinately would not wake up the system.
Obviously I couldn’t sleep with things this way, so I decided to try just one other thing: I changed the profile I was using for the transceiver in the Harmony configuration. The MCE remote protocol is a standard of sorts, so there are actually a whole bunch of ‘devices’ in Logitech’s database which are listed as being for various HTPCs or remote controls which are really just sending the standard MCE commands, and you can pick any of them if what you’re actually talking to is an MCE transceiver. As I mentioned above, I’d picked the one that most closely matched the transceiver I actually bought, the Philips OVU4120. But I’d found a note somewhere that only one specific MCE IR code can actually trigger a wake from suspend, and I wondered if somehow the power command in that Philips profile was the wrong one.
Apparently it was! I switched to the “Microsoft Media Center Extender” profile in the Harmony software, sent a power toggle command, and watched in joy as the damn thing finally actually woke up from suspend.
So yup: if you want to both suspend and wake a computer with a USB MCE IR transceiver using a Harmony remote, do all the other stuff you can read about, but also make sure you use the Microsoft Media Center Extender profile and use the power toggle command. I couldn’t find this explicitly noted anywhere else, but it was the bit of the puzzle I was missing.
Happily, in the interim when I’d given up on this working, OpenElec/XBMC seem to have fixed a bug where the Zotac box I’m using didn’t come back entirely reliably from suspend, and it all seems to be prety bulletproof now. Whee!
I’m now considering a second attempt at a MythTV-based PVR. I had one more or less up and running for a while, but we got annoyed at only having a single tuner, and there were a few other kinks. In the end I bought a new box from the cable co which has PVR functionality if you plug in an external hard disk, but that’s proved to be even more of a nightmare so I don’t use it any more. It now appears to be the case that I can pick up a Motorola DCX-3200, DCX-3400 or DCX-3510 box reasonably cheap from Shaw or Craigslist, and by all indications those boxes work well with MythTV and firewire control, and Shaw still transmits most channels without the flag that blocks firewire output. I still have an old DCT6200 box in the bedroom, so with that plus two of the 3200s or one of the PVR boxes I’d have three tuners. I can put together a dedicated MythTV backend box (just a couple of big hard disks, some RAM, and firewire inputs are really all it’d need, as there’s no need to transcode firewire-captured video) for $300 or so, and XBMC apparently works well as a MythTV front end these days, so I could use the OpenELEC box as the main front end. Maybe I’ll give the project a go this weekend. If I pick up the DCX-3510, even if the MythTV plan doesn’t work out, I’d have a better ‘official’ PVR box…