Tuesday 2 September 2014

FlashAir, A wireless SD-card

Toshiba FlashAir is an SD card with built-in wireless network capability, so it's possible to transfer files from/to it with the card sitting inside another device. As many retro-computers now have card readers, it might be interesting to have wireless transfer to a card. Let's see...

Marq took the plunge and got the cards, and he has been working toward a script that allows more flexible card use. I was at first sceptical, as the product seemed like something that would only work inside a (specific) camera or something. And, yeah, that seems to have been the original intent, sort of. Only, clever people have found out there are undocumented features in the card that allow uploading to the card. For the retro-enthusiasts among us, this should be the more interesting part.

Well, if most people only want a huge collection of snapshots/tape images on a card, a wireless card might not be that interesting. But for a 8-bit cross-developer, the wireless card offers an interesting route toward running code "instantly" on the real target hardware, if that computer has an SD card reader, that is. But I'd imagine it would also add convenience for general file transfer.

Following the instructions here, I could get the card to work eventually. Now that the work has been done by others, it is quite simple. Still, I misunderstood a couple of points so I'll follow with hopefully even simpler instructions.

A word of warning, though. There's relatively little experience about these things and the card might simply fail eventually. It's an undocumented feature, after all.


1. There is a configuration text file CONFIG on the FlashAir SD card folder SD_WLAN. Back it up and modify it with a plain text editor. Normally the card operates on APPMODE 4, which is for downloading (image) files from the card. Crucially, this is changed to 5, upload is enabled, the card is given the ID and password to your WLAN.

Following the instructions here, the config file, when modified, looks something like this:


APPNETWORKKEY=Your wlan password
COMMAND=wlan 11n 1

(I've hidden everything that might even remotely be tied to the identity of my own card. Obviously your config will have these lines already filled in.)

2. Now, the card should be ready to be inserted into a computer SD-card reader. For clarity I would suggest using some other computer/device than your mac/pc/linux. Not that there should be problems.

Wait for a while for the card to boot up. (About 15 seconds)

3. As the card is powered up, you'll need to find the IP address of the card. On OSX, a PING from the Terminal ought to reveal the card, if it is working at all in the APPMODE 5. If there's a lot of addresses you have to figure out which one is the card. You might start pinging before you insert the card, and after about 15 seconds it should appear in the list.

4. Then open your browser, go to address http://n.n.n.n/upload.cgi (where n.n.n.n is obviously your card address just revealed). You will be greeted with a minimal file-selector and a "submit" icon, which is used for sending your files to the SD card.

Check Marq's work on the script I linked above for more sophisticated card use.


Some of my experiences with the FlashAir card and different computer/card reader combos:


ZXEvolution has an SD-card reader built-in, it is pretty much the main storage device there. On the Evo the card seems to work perfectly: I can send files at any time, and resetting the Evo does not reset the card.


Sinclair QL + QL-SD card reader:

QL-SD is a bit problematic, because of the QL_BDI.BIN drive image scheme. Even if the card worked smoothly, rewriting the entire QL_BDI.BIN is not that useful. (I have not tried the QL-SD in the "native" mode, as the user manual advices against it.)

Also, the SD card can become fragmented easily and after that the QL may refuse to mount it. So you have to format the entire card and make sure that QL_BDI.BIN is the first thing you copy there. However after this is ensured there should be no trouble.

It also seemed that the presence of the card on the WLAN was a bit erratic.


Commodore 64 + SD2IEC card floppy:

The server does not seem to run while the card is inside the SD2IEC. I can't hazard a guess as to why it is so. At least without alterations SD2IEC with FlashAir is a no go. This is a bit sad as the FlashAir could have made the SD2IEC into something so much more.


HxC SD Floppy Emulator:

A very generic SD card reader that works in Amiga, Atari ST, PC, Amstrad CPC and MSX etc... The server responds when a file is unselected, which is quite the expected behaviour. The file can be then uploaded, and chosen immediately afterwards. Perfect!

I've only tried it with Atari ST but the functionality should not depend on the computer platform in any way, so there's a lot of devices this could be connected.


Chromebook C720 ChromeOS/Linux:

The card works, but needs to be unmounted/mounted in succession before the uploaded files become visible for the file system. This is not too big a hassle but has to be arranged. On the ChromeOS side it is not clear how this could be done. Also, a modern computer is not an especially useful application for the card.



I've previously thought the FlashAir has been a bit of a hit and miss, but having HxC compatibility adds a massive amount of potential systems.

I've not tried all devices, though. There's still SD2SIO, Compact Flash/SD converters and so on.