Tuesday, April 19, 2011

Direct Mode Support

The good news: I believe I have direct mode working. There are 3 new commands. Two of them are big 'O' integer commands: an ASCII 'O' followed by a command-number byte (like an ioctl()), an argument length byte, and then a single byte for the number being fed in to the command.
  • O[0x24]: DIRECT_WAIT_FOR_CONNECTION: Corresponds to "wait for XX seconds for a device to connect" slider in Eye-Fi center. The argument is a number of seconds. 0 means "direct mode off" and 0xff means "wait forever"
  • O[0x25]: DIRECT_WAIT_AFTER_TRANSFER: Corresponds to "will stay on YY seconds after the last item is received" slider. Set to 60 when direct mode is off. 0xff means "wait forever"
  • S: tells the card to "Start Direct Mode Network". This is useful for pairing, and corresponds to a button of the same name in the Eye-Fi Center GUI.
The bad news is that I bricked a card doing this. I think it happened just after I started direct mode, then asked the card to scan and then give me a list of configured networks. The card never responded to another command, despite a number of reformats. The odd part is that the official software does something in a very similar order. This is not the first time I've managed to break one of these cards, and I'm hoping the support will be as great as it was last time.

I'm going to hold off on actually releasing the software for a bit. I'm concerned about bricking other cards somehow.

Friday, April 15, 2011

"Mobile X2" Card with "Direct Uploads"

Eye-Fi released a new card model recently. They're calling it a "Mobile X2". From the spec comparison it looks like it is just an 8GB version of the existing 4GB Connect X2. That is, it's probably the exact same hardware as the Pro Card, but with tweaked firmware.

The cool thing about these new cards is that they don't need an existing WiFi network at all, even an Ad-Hoc one. They can evidently create their own network:
The Eye-Fi X2 card will create its own Wi-Fi network and transfer to the free iPhone/iPad or Android app
I'm actually a bit surprised they are doing this. I always figured that the Ad-Hoc support in the Pro card was one of its main selling points. This blows that away completely. I also hope Shutter Snitch gets support for the new mode, otherwise it's going to be a lot less useful going forward.

It sounds like you'll need a firmware update next week and probably also have to enable the direct mode somehow. I'll try that out as soon as they release the new firmware next week, and try to make sure I put support for it in eyefi-config.

Friday, March 25, 2011

New Release: 011

Someone was kind enough to send me a Pro X2 card, along with a plain X2. Before, I only had a 4GB "Wi-Fi" card. The new cards have some nice features, and this release adds support for a few of them, and few that I never got around to supporting before.
  • --transfer-mode: print or change card transfer mode or =help to list modes
  • --wifi-radio fetch wifi radio state, or turn it on and off
  • --endless: fetch or set endless storage trigger percentage
I'm also fairly sure at this point that the Ad-Hoc support in the "Pro" cards does not actually manifest in the card interface at all. I believe it still requires a DHCP server on the network. You use the same commands to add an Ad-Hoc network that you would to add a normal Infrastructure network.

Go ahead and download the new release here, or view the changelog if you want more details.

Sunday, March 20, 2011

Transfer Mode Command

The Eye-Fi software has not run under WINE in quite a while. That was disappointing because it's how I first reverse-engineered the commands. But, I have a new and much simpler method now, and it's much less likely to break from future Eye-Fi software changes.

I've now added a --transfer-mode option. This "selective transfer" mode described here.
  • "Selective Share" is --transfer-mode=SELSHARE
  • "Selective Transfer" is --transfer-mode=SELUPLOAD
  • The default mode is automatic and it is specified with --transfer-mode=AUTO
I chose those names because they match what ends up coming out in the card's log.

I haven't made a release yet, but this code is now available in the git tree.