The only one I've seen is
URC. You can only program it for only 1 device, and it's not extremely funtional, but it can "learn" a device. I actually don't think I ever got it to work on my x30, but I guess it's worth a shot.
[EDIT]
Hrm, reread your post. URC may not be too helpful for you actually, since I don't believe there is a way to program it without using the old remote (As far as I know, no pre-set codes, for example).