Hallo,
wenn ich mich richtig erinnere benötigte der LS 1000W "framechannel" der mittlerweile eingestellt ist. Folgende Info habe ich selber dann nicht mehr ausprobiert.
Hacking Motorola LS1000W Photoframe
31 10 2010
This short how-to shows you how to use your Motorola LS1000W Photoframe as a cheap and flexible wireless display inside your trusted lan and why you should NEVER EVER use the included FrameChannel account for privacy reasons.
The frame comes with a nice bunch of features: Wifi, usb, sdcard, rss, mp3 and a 10.4" 800x600 Display.
I had the idea to use it as a cheap wireless display, googled around and found the german Infoframe project, where they use Samsung SPF-83V frames as displays. However, our companys purchasing agent already bought the motos, so I went on with them.
First field test will be a simple cleaning rota system for our mildewed coffee machines, people will register into a webapp, enter their workdays, time availability, vacations, etc, the software calculates every day who the lucky ones are and displays attached to the machines remind everyone not to forget it. Peer pressure FTW! At some point in future I might have the heart to use the milk-spender button again, if it works out fine...
So, the app progressed quickly, and finally I had to draw something to a display. Initially I thought there would be some kind of support for Upnp mediaserver like Twonky, but well, nope. RSS is the way to go, but I had no luck to display image streams inside the frames rss client. Its text+thumbnails only.
FrameChannel remained the last chance of success. It supports image streams, and it supports autoplay, which is just perfect in conjunction with the frames automatic power-on and power-off feature.
The big problem is: FrameChannel is a commercial rss-aggregator service, which requires the frame to be online all the time. It collects rss feeds from all over the net, generates an own feed, the frame downloads the new feed and then all included items.
So, basically you can set up your own image server, publish some rss, subscribe to your own stream with FramChannel, and download your own stream back from FrameChannel to your photoframe. Great, isn't it? Yay, no its not.
Because of the overall stupidity of things and due to the fact that our coffee cleaning schedules are a corporate secret, I started to sniff some traffic and poke a bit around, and this is what I found:
• FrameChannel protocol ist just simple rss
• The frame identifies itself by a short unique id, transferred in http GET request as plain text
Here is a request send by the frame:
http://rss.framechannel.com/\
productId=MOT001/\
frameId=XXXXXXXXXXXX/\
language=en/\
firmware=20090721
The productId parameter identifies the product (there are some other frames which use framechannel), the frameId identifies the frame. Its xxx-ed out here, because if you play with the id, you can easily access other peoples images or frame activation codes of their photoframes and set up some funny feeds for them... However, I have not investigated into that direction, but its clear that this sucks big time.
But back to our goal, the holy quest for offlining of the frame, at least now we know why
Its pretty simple, as there is virtually no security builtin:
1. Overload the public DNS entry for rss.framechannel.com in your lan and let it point to a local apache. I accomplished this by simply adding the following line to /etc/hosts of our dns server:
192.168.0.2 rss.framechannel.com
This line tells the frame that rss.framechannel.com is ours now. Or you could redirect traffic on port 80 to rss.framechannel.com by iptables as well, its your choice.
2. Now we need a rss file in our servers webroot, and the following .htaccess file:
RewriteEngine on
RewriteRule ^productId=MOT001.+$ myfeed.rss
It simply identifies a photoframe by its productId, and replies to every query by sending the contents of the myfeed.rss file. You could match by frameId if you have several frames to serve..
3. The rss files structure is simple:
<?xml version="1.0" encoding="utf-8" ?>
<rss>
<channel>
<ttl>1</ttl>
<item>
<media:content url="http://some/image.jpg" type="image/jpeg" />
</item>
</channel>
</rss>
This is a minimal file, <ttl> is a value in minutes, how often the frame will check rss for changes, every image needs its own <item>.
Using this file, there is no caching at all, the frame will download every image everytime its needed, you can play with guid-tag to enable caching. Frame will reload only if guid changes, and with <description> you could add some description of course^^
As far I checked, only jpeg files are supported in stream. sadly no png, gif or mp3 support.