Archive for February 12th, 2008

Hacking Eye-Fi For Data

Eye-fi Camera

The Eye-Fi card is a memory card for cameras that wirelessly uploads photos to your home computer or to online services like Flickr. It connects automatically to a pre-selected Wi-Fi network, then interactively transfers JPEG files in real-time. The whole thing operates out of a standard-size SD memory card, a technical feat so incredible that I was pretty sure it was a hoax until I did it myself. Works great, and it got me thinking about whether other types of files could be moved as easily.

The idea was to log environmental data using remote sensors, then have this card automatically send those data files out over Wi-Fi. Unfortunately, it’s not quite that easy. Here’s what I learned:

  • The Eye-Fi servers block all transfers that don’t appear to be JPEG files created by a camera. Apparently the file name, file type and the actual file contents are examined by the server to ensure this.
  • The card and the computer can only communicate directly if they are on the same local router (technically  defined as the same TCP/IP subnet?). If they are on different routers then all files must be passed through a commercial online service to posts the photos. These would almost certainly reject non-photo file types.
  • The Eye-Fi card won’t connect to all types of networks. It was unable to use a variety of different secure networks here at NYU, nor would it connect to a locally shared Wi-Fi network from my Mac laptop. I was only able to get it connected on a special network that ITP maintains for our own research projects.
  • Contacts at Eye-Fi, Inc. were unable to provide any alternative methods of connection. Using the Eye-Fi for alternate file types is not only unsupported, it apparently is actively discouraged.

Despite these difficulties, the concept is not quite a lost cause. There’s still potential for some work-around hacks:

  • It’s certainly possible for data to be directly captured in a photo, for example by displaying it on an LCD display and having a camera with the Eye-Fi card take regular pictures of the screen.
  • It is likely that a JPEG picture of the data could be generated algorithmically, though I’m unclear on whether a microcontroller would be up to the task.
  • The best hack might be to take the text data and inject it into the comments area at the end of an existing single-pixel JPEG file. Because the file format is well-documented, it seems like this would be a relatively easy technical task, and certainly one that could be performed by a microcontroller.

Whether any of this is worthwhile depends upon the application. There’s no point in doing a lot of hacking on a $100 card when a $19 XBee radio will happily transfer data using less power, and with the excellent customer and engineering support provided by Digi. However there are certain situations, for example a mobile environmental sensor with transient access to Wi-Fi, where the combination of storage and session management would make hacking an Eye-Fi worthwhile. If you happen to try out any of these potential hacks, please let me know and I’ll share the results.