Firefly Remote Support Here! (1 Viewer)

iscrow

Portal Member
April 8, 2006
7
0
I have a Snapstream Firefly RF Remote control. I had it working with some plugins, but this broke in RC3 and RC4. What was added in RC3 however was X10 Remote support right in MediaPortal. It supports several remotes out of the box but Firefly wasn't one of them. Custom remote can be defined but that is a pain as the buttons on the Firefly do not correspond to the button names listed in the X10 custom mappings in Media Portal.

So, I made my own XML file to use with the Firefly.

Here's how to use it. Remove Beyond Media or whatever else you may have. Install just the plain X10 driver for the Firefly from:

http://www.snapstream.net/download/Firefly_Drivers.aspx


Now open MediaPortal Setup. Go to "Remote" open the X10 tab.
Click "Use X10 Remote" and choose "other".

Click OK to close MediaPortal Setup.

Now, go to:

C:\Program Files\Team MediaPortal\MediaPortal\InputDeviceMappings\custom

There's a file there called "Other X10.xml". Open it, delete all it's contents, then copy and paste the XML below in the file.

If the file and/or the custom folder are not there, just create them. The "Other X10.xml" should contain the following:

Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<mappings version="3">
	<remote family="X10 Remote">
		<button name="Maximize" code="158">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="18" sound="click.wav" />
		</button>
		<button name="Power (Close)" code="30">
			<action layer="0" condition="*" conproperty="-1" command="POWER" cmdproperty="EXIT" sound="back.wav" />
		</button>
		<button name="0" code="20">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="80" sound="click.wav" />
			<action layer="0" condition="WINDOW" conproperty="2" command="ACTION" cmdproperty="80" sound="click.wav" />
			<action layer="0" condition="WINDOW" conproperty="25" command="ACTION" cmdproperty="80" sound="click.wav" />
			<action layer="0" condition="WINDOW" conproperty="603" command="ACTION" cmdproperty="80" sound="click.wav" />
			<action layer="0" condition="WINDOW" conproperty="605" command="ACTION" cmdproperty="80" sound="click.wav" />
			<action layer="0" condition="WINDOW" conproperty="606" command="ACTION" cmdproperty="80" sound="click.wav" />
			<action layer="0" condition="WINDOW" conproperty="10" command="ACTION" cmdproperty="48" sound="back.wav" />
			<action layer="0" condition="WINDOW" conproperty="11" command="ACTION" cmdproperty="48" sound="back.wav" />
			<action layer="0" condition="WINDOW" conproperty="600" command="ACTION" cmdproperty="88" sound="back.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="48" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="1" code="44">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="37" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="49" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="2" code="47">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="38" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="50" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="3" code="42">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="39" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="51" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="4" code="22">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="40" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="52" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="5" code="27">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="41" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="53" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="6" code="25">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="42" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="54" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="7" code="23">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="43" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="55" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="8" code="26">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="44" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="56" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="9" code="21">
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="45" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="93" cmdkeychar="57" cmdkeycode="0" sound="cursor.wav" />
		</button>
		<button name="Pause" code="0">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="12" sound="click.wav" />
		</button>
		<button name="Record" code="1">
			<action layer="0" condition="WINDOW" conproperty="600" command="ACTION" cmdproperty="7" sound="click.wav" />
			<action layer="0" condition="WINDOW" conproperty="501" command="ACTION" cmdproperty="113" sound="click.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="89" sound="click.wav" />
		</button>
		<button name="Rewind" code="2">
			<action layer="0" condition="WINDOW" conproperty="600" command="ACTION" cmdproperty="87" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="17" sound="cursor.wav" />
		</button>
		<button name="FastForward" code="4">
			<action layer="0" condition="WINDOW" conproperty="600" command="ACTION" cmdproperty="86" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="16" sound="cursor.wav" />
		</button>
		<button name="Stop" code="5">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="13" sound="click.wav" />
		</button>
		<button name="Play" code="6">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="68" sound="click.wav" />
		</button>
		<button name="Menu" code="97">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="106" sound="click.wav" />
		</button>
		<button name="Up" code="19">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="3" sound="cursor.wav" />
		</button>
		<button name="Down" code="12">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="4" sound="cursor.wav" />
		</button>
		<button name="Left" code="13">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="1" sound="cursor.wav" />
		</button>
		<button name="Right" code="11">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="2" sound="cursor.wav" />
		</button>
		<button name="OK" code="15">
			<action layer="0" condition="WINDOW" conproperty="11" command="ACTION" cmdproperty="47" sound="click.wav" />
			<action layer="0" condition="WINDOW" conproperty="10" command="ACTION" cmdproperty="10" sound="back.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="7" sound="click.wav" />
		</button>
		<button name="Exit" code="98">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="10" sound="back.wav" />
		</button>
		<button name="VolumeUp" code="37">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="103" sound="cursor.wav" />
		</button>
		<button name="VolumeDown" code="35">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="102" sound="cursor.wav" />
		</button>
		<button name="Mute" code="40">
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="9982" sound="click.wav" />
		</button>
		<button name="ChannelUp" code="41">
			<action layer="0" condition="WINDOW" conproperty="7701" command="ACTION" cmdproperty="9979" sound="cursor.wav" />
			<action layer="0" condition="WINDOW" conproperty="7700" command="ACTION" cmdproperty="9979" sound="cursor.wav" />
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="31" sound="cursor.wav" />
			<action layer="0" condition="WINDOW" conproperty="1" command="ACTION" cmdproperty="95" sound="cursor.wav" />
			<action layer="0" condition="WINDOW" conproperty="602" command="ACTION" cmdproperty="95" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="5" sound="cursor.wav" />
		</button>
		<button name="ChannelDown" code="48">
			<action layer="0" condition="WINDOW" conproperty="7701" command="ACTION" cmdproperty="9980" sound="cursor.wav" />
			<action layer="0" condition="WINDOW" conproperty="7700" command="ACTION" cmdproperty="9980" sound="cursor.wav" />
			<action layer="0" condition="WINDOW" conproperty="2007" command="ACTION" cmdproperty="30" sound="cursor.wav" />
			<action layer="0" condition="WINDOW" conproperty="1" command="ACTION" cmdproperty="94" sound="cursor.wav" />
			<action layer="0" condition="WINDOW" conproperty="602" command="ACTION" cmdproperty="94" sound="cursor.wav" />
			<action layer="0" condition="*" conproperty="-1" command="ACTION" cmdproperty="6" sound="cursor.wav" />
		</button>
		<button name="Firefly" code="74">
			<action layer="0" condition="*" conproperty="-1" command="WINDOW" cmdproperty="0" sound="click.wav" />
		</button>
		<button name="Help" code="75" />
		<button name="A" code="76" />
		<button name="B" code="77" />
		<button name="C" code="78" />
		<button name="D" code="79" />
		<button name="TV" code="80">
			<action layer="0" condition="*" conproperty="-1" command="WINDOW" cmdproperty="1" sound="click.wav" />
		</button>
		<button name="DVD" code="81">
			<action layer="0" condition="*" conproperty="-1" command="WINDOW" cmdproperty="3001" sound="click.wav" />
		</button>
		<button name="Photos" code="82">
			<action layer="0" condition="*" conproperty="-1" command="WINDOW" cmdproperty="2" sound="click.wav" />
		</button>
		<button name="Music" code="83">
			<action layer="0" condition="*" conproperty="-1" command="WINDOW" cmdproperty="501" sound="click.wav" />
		</button>
		<button name="Video" code="84">
			<action layer="0" condition="*" conproperty="-1" command="WINDOW" cmdproperty="6" sound="click.wav" />
		</button>
		<button name="Previous" code="137" />
		<button name="Next" code="138" />
		<button name="Option" code="150" />
		<button name="Back" code="156" />
		<button name="Ent" code="157" />
		<button name="Mouse" code="159" />
		<button name="Info" code="160" />
	</remote>
</mappings>

Now save the file, open MediaPortal Setup and go to "Remote", then open the "X10" tab, click "Mapping" and you should see all the familiar Firefly button names. Some of them have actions defined, others do not. Customize them to suit your needs.

If you find a button that does not work, post here and I'll help. I haven't tested all the buttons but they should work...

Hope this helps. Post a comment if this helped you!

Also, for the MediaPortal developers:

Thanks guys for the countless hours you are putting in MediaPortal development. This is the best media software on the face of this planet. I run it at home, at friends houses, in my car and in a couple of monts it will be going in a corporate boardroom!

Feel free to use my XML file to add native SnapStream Firefly support in Media Portal. *Hint* *Hint
 

phertiker

Portal Member
June 29, 2005
41
2
48
Home Country
United States of America United States of America
big huge freaking ups for this profile. i appreciate you doing all the work creating this profile so my lazy a$$ can sit back and enjoy using my remote again.

also, thanks to the mp team for the integrated x10 support. not only is it faster and tighter but it's more versatile too. being able to create conditions so a single key has multiple uses is just sick.

btw, you can just leave beyond media basic installed and turn off the auto-run. that way, if you need it to control other proggies, you can just fire it back up again.
 

Taipan

Retired Team Member
  • Premium Supporter
  • February 23, 2005
    2,075
    44
    Melbourne
    Home Country
    Australia Australia
    mPod said:
    "sick" = wonderful, fantastic, really great, marvellous....etc

    Weird, isn't it... :lol:

    I learn't the meaning of that one from my kids....
     

    iscrow

    Portal Member
    April 8, 2006
    7
    0
    Yeah it is slick, but it wasn't that much work to create the profile. 95% of the credit should go to the MediaPortal dev team for integrating the X10 framework in MP.

    The hardest thing was trying to determine the X10 codes corresponding to each key on my firefly.

    The way I did this was to install EventGhost. It also has X10 support, but when you press a key on the X10 remote, event ghost kives you the generic button name, which is different than the function of the button. I correlated these names with the names in the default custom MediaPortal profile to figure out the actual codes. Then, when I had all this mapped out, I just chanjed the names in the XML profile to match the button names on the firefly and voila, it worked like a charm. What's slick is that thanks to the MP team, we can now call particular screens with a button press! so now the TV, Photos, Music, etc. buttons on the firefly remote can be mapped to the corresponding screens in Media Portal! That was impossible to do the "old way" with girder and sending keystrokes that didn't work right half the time...

    I'm glad this is helping people. I think the firefly is one of the slickest PC remote contorls out there, but very few apps support it natively. I wonder why? I have one in my home theater and one in my car. They are just awesome. I like the key layout and I like that it has some PC related keys on it unlike other remotes.

    Anyway... enjoy the profile.
     

    phertiker

    Portal Member
    June 29, 2005
    41
    2
    48
    Home Country
    United States of America United States of America
    mPod said:
    Taipan said:
    mPod said:
    "sick" = wonderful, fantastic, really great, marvellous....etc

    Weird, isn't it... :lol:

    I learn't the meaning of that one from my kids....
    Oh dear, am I really that old already? :roll:

    Nah, I'm just trying to stay "cool" so my kids won't be totally embarrassed by me. I gotta tell ya, it's not working all that well.
     

    TinXpH

    New Member
    May 4, 2006
    4
    0
    rofl nice one :) well I just hope someone with the right experience might also do that for my Logitech UltraX remote which is still not 100% working :|
     

    hartertw

    New Member
    May 10, 2006
    2
    0
    Washington, USA
    I just got my firefly remote today and thanks to you iscrow it is up and running!!! Thanks a lot :D ! I do have a couple of comments and questions though.

    1st:
    iscrow said:
    C:\Program Files\Team MediaPortal\MediaPortal\InputDeviceMappings\custom

    There's a file there called "Other X10.xml".
    I'm not sure about RC3 because I'm using RC4 but, for me, the "Other X10.xml" file was found in the default directory along with all the other xml files. There wasn't even a custom directory. IOW, for me, the file that needed to be modified was located at C:\Program Files\Team MediaPortal\MediaPortal\InputDeviceMappings\default\Other X10.xml. Just thought I would give anyone else a heads up about that.

    2nd:
    You maped all the button wonderfully except one. The red close button at the top of the remote. You think you have the time to map that one? :wink:

    3rd:
    You have alot of the button mapped to actions already but some of them don't. Do you have any suggestions on what some of the other ones could be used for? For example the A-D buttons.

    Well thanks again iscrow!!
     

    Users who are viewing this thread

    Top Bottom