Thursday, October 8, 2009

Eye-Fi releases source code

In March, Eye-Fi finally released source code for their copy of eCos and began complying with the GPL. Over in the message boards, Berend mentioned that nobody had ever asked for the source like that before. Citing the GPL in June 2008 in a private email I mentioned that "That's why I'm only asking for eCos itself". Oh, well. It's good to see that they're learning.

It's good to remember that this is just eCos and not the wireless driver or any of the custom Eye-Fi code that runs on the card. This is probably just what Eye-Fi got from Atheros after Atheros ported eCos to the AR6001. What this means practically is that we could probably build something to run on the card, but that the WiFi would not work. We'd have to either find some way to hack in bits of the original binaries, or find out how to operate the radio on our own.

On another front, I realized that each download of new binary firmware is unique. Even if you ask for the same firmware version and card MAC, you get a different image. The MAC or some other identifier must be recorded in the image because the card refuses to flash a new firmware unless it was downloaded with the correct MAC. Probably a "security" measure to help ensure that people do not flash the firmware for the higher end cards like the "Pro" on to the lower end cards.


M.W. said... has open source Linux drivers for the AR6001. While they're not for eCos, they might be a start.

James G. said...

Just got my eye-fi card, I am waiting for custom firmware. I will be glad to overwrite firmware on this thing after my year of free subscribed service is up.... which I'm afraid it's going to piss me off... but we'll see.

Unknown said...


I'm trying to talk to the card directly, in an attempt to setup and ad-hoc connection (on a pro card, which does support ad-hoc).

I've been looking through your source and it's a bit tricky to see how it communicates with the card using those 4 files.

Do you have any information on how the protocol works?

Dave Hansen said...

I have an older post where I talk about it a bit:

The protocol is kinda like an ioctl(). Read the seq number. Write a command character, followed by arguments to the command. Wait for the seq to change, read the result.

I really don't know how the ad-hoc mode is implemented. It'll need an IP address and so forth, so it probably can't use one of the existing commands, at least as I have them coded up. I also don't have a Pro card, so unless it gets coded up by someone else, I'm not going to be able to do it.

Unknown said...

I am also interested in using the Eye-Fi just as a wifi card; the only other AR6001 based sdio card I can find is at $99; Eye-Fi seems to go for around $49 on ebay.

James G. said...

All of the cards are the same thing. The only thing that makes them different is the sticker on the front, and the licenses you get with them. Their firmware can all do the same tricks, connect to an ad-hoc, upload from anywhere, you just need to put the license in.
So with that in mind. There is no difference between the pro and the home cards.
And you can upgrade the license at any time to give you the pro features.

Till said...

Has anyone successfully compiled his own version of the open sourced eCos and put it on a EyeFi Card? With or without the atheros driver...

judging from this ( it doesn't seem like an all too easy task...


Dave Hansen said...

> Has anyone successfully compiled his
> own version of the open sourced eCos
> and put it on a EyeFi Card?

Nope. It hasn't been done as far as I know.

Mark said...


How does one legitimately (or otherwise) upgrade the license? The only upgrade provision on the website is for geo-tagging, hotspots and web sharing.

I have a 4gb Explore Video card but want to upload RAW.

James G. said...

It looks like Raw is a feature on the pro cards only. There is apparently a difference according to eyefi. (I doubt there really is) But the newer cards dubbed X2 have communication back to the camera's now, that sony camera's handle with in menu options.