Adding WiFi to your bot with Toshiba FlashAir SD Card

8,831 views
Skip to first unread message

Jake

unread,
Jun 1, 2013, 9:48:55 AM6/1/13
to make...@googlegroups.com
Over on another thread, there was some discussion on using a WiFi enabled SD card in the Replicator.  (https://groups.google.com/d/topic/makerbot/vycvaKTwue0/discussion) A few options were discussed, including the EyeFi and the Toshiba FlashAir.

I decided to buy a Toshiba FlashAir and see if I could get it to work.  The ability to both download from and upload to the card is listed as a feature, and mentioned in many reviews.  Unfortunately, there is no mention of the upload feature in the documentation or in the card's UI.  Out of the box, the card broadcasts as a WiFi base station.  When you connect to the card's SSID, you then get a web server that allows you to read the files on the card.  That's about it. Settings are configured by a text file stored in a directory on the SD card.

Luckily, it seems like there is a trove of undocumented features on the card, including upload ability, and the ability to join an existing network.

So what's the secret sauce?  Its all in the CONFIG file:

[Vendor]
CIPATH=/DCIM/100__TSB/FA000001.JPG
VERSION=F24A6W3AW1.00.03
CID=02544d53573038470750031e0c00cc01
PRODUCT=FlashAir
VENDOR=TOSHIBA
UPLOAD=1
APPMODE=5
APPNAME=Makerbot
APPSSID=MyNetworkName
APPNETWORKKEY=MyNetworkPassword
LOCK=1
APPAUTOTIME=300000

The key is the undocumented "APPMODE" setting.  APPMODE=4 (default) will make the card broadcast its own network.  APPMODE=5 (undocumented) will have the card connect to your exisitng network.  APPNAME is the host name the card uses when in APPMODE=4, not sure it does anything when APPMODE=5.

The second key is the "UPLOAD=1" line, which enables the upload functionality.

LOCK=1, as far as I can tell, informs the card whether the initial setup has been performed.  APPAUTOTIME is the time before the card shuts down the WiFi (in 1/1000's of a sec).  It seems to me that removing this key completely doesn't leave the card active indefinitely, so I've gotta try putting in a large number there.

Other settings that exist but I haven't really played with: APPSSID, APPCHANNEL, HTTPDMODE, HTTPDUSER, HTTPDPASS, APPMINTIME, APPMAXTIME, DNSMODE, REDIRECT, APPEXT, APPTYPE, AGINGTIME, WLANSTAMODE, DOMAINNAME, APMODE, NOGATEWAYMODE

Uploading is simple,  just go to <SDCARDIP>/upload.cgi.  A very small HTML form will appear where you can pick a file and upload it.  You'll get back "Success" if it worked an "NG" (No Good?) if it didn't.  You can also use curl from the command line

 curl -F file=@FILETOUP.x3g -F submit=submit http://SDCARDIP/upload.cgi
 
There are some limitations.  First, the upload feature only supports 8.3 filenames.  Second, any files uploaded are uppercased.  So "NewArm.x3g" becomes "NEWARM.X3G".  Current versions of bot firmware will only show lowercase extensions, but Dan has kindly decided to tentatively include a case insensitive filter in the next release of Sailfish.  (It takes up some precious bytes, so it may eventually need to be removed someday)

Thirdly, the card doesn't seem to stay connected to the network indefinitely.  The card is designed for cameras, and leaving WiFi on while you're out taking pictures would be a battery drain, so it shuts down in a predefined internal.  (Configurable).  Also, I'm not sure how stable their WiFi/IP stack is.  I'm hopeful that I (or someone else) can figure out how to get it to stay on and connected permanently.

Finally, the card's a little slow, but its not terrible for transferring X3Gs.

I have not tried changing files in use by the bot during a print.  I think that would be a bad idea.

Anyway, there more but I think this post is long enough for now.  Is it worth $50 for one of these cards?  MAYBE-- it has potential if we can get the network link to stay online and reliable.  Even without that, it still might be preferable to swapping out SD cards all the time.



Jake

unread,
Jun 1, 2013, 10:23:40 AM6/1/13
to make...@googlegroups.com
Just a note, since the card is an 8GB SDHC card, you'll need to be running sailfish for this to work at all, in case that wasn't clear.

RocketGuy

unread,
Jul 30, 2013, 8:05:18 PM7/30/13
to make...@googlegroups.com
I'm attempting to get this to work, is the config file viewable somewhere on the card?  How did you get to it?  (I'm Macosx/unix capable, but not windows, so I'm hoping it wasn't a windows utility).  I attempted to find it via the wifi web server, but no dice.  Can you clarify your specific steps?  

Thanks-
-RG

MadReasonable

unread,
Jul 30, 2013, 8:16:02 PM7/30/13
to make...@googlegroups.com
Wow, thanks for your work on this. I had given up on the idea after reading that the card created it's own network. How are you getting around the uppercase issue right now?

Dan Newman

unread,
Jul 30, 2013, 8:28:34 PM7/30/13
to make...@googlegroups.com

On 30 Jul 2013 , at 5:16 PM, MadReasonable wrote:

> Wow, thanks for your work on this. I had given up on the idea after reading that the card created it's own network. How are you getting around the uppercase issue right now?

I'll let Jake answer the other questions but as to the case sensitivity issue,
Sailfish 7.5 is case insensitive as regards .s3g vs. .S3g vs. .s3G vs. .S3G.
Likewise for x3g. And it's never been an issue on ToMs and Cupcakes which
don't care one iota about file extensions. Worrying about the file extension
was something MBI did in the Replicators and Sailfish emulated that behavior.

Dan

Jake

unread,
Jul 30, 2013, 9:07:53 PM7/30/13
to make...@googlegroups.com
I am not near my machine, but I'll answer from memory. The config file is plain text in a SD_WLAN folder if I recall. Mount the SD card in the SD slot on your mac and you should be able to see and edit the config file.

MadReasonable

unread,
Jul 30, 2013, 10:57:31 PM7/30/13
to make...@googlegroups.com
Just ordered the SD card :)

Jetguy

unread,
Jul 30, 2013, 11:31:58 PM7/30/13
to make...@googlegroups.com
Hey, I just wanted to link the threads here because I presented a neat idea if used with the Toshiba card that could provide both file transfer and control.
 
Yes, it requires you mod the mainboard. It's NOT that bad, only 2 lines. It won't work with Makerware but would work with Rep-G.
 
This is a USB to serial modem wireless pair of adapters.
Basically it replaces the USB to serial conversion that normally happens on the mainboard.
 
Again, I know this will work for control (I wouldn't print over it) but does require a mod to the mainboard. I can demonstrate this next weekend and document for a mightyboard rev. E and Jake would have to be down to investigating the mod for rev-G and H boards in the 2 series.

Jake

unread,
Jul 31, 2013, 8:22:52 AM7/31/13
to make...@googlegroups.com


I posted s a really simple "use at your own risk", not much error handling, python script to upload files to the FlashAir at the bottom of the blog page.  (http://www.extrud3d.com/flashair)

It uses the "Poster" library which you must install: https://pypi.python.org/pypi/poster/

Usage is simple:

flashair_uploader.py -v -c makerbot.myhomenet.private PRINTME.x3g

the -v will subsequently download the file back off the SD card and verify that it went up properly. The -c parameter is for the IP of the card. It uploads into the root directory of the card.

It uses ANSI code to render the progress bar. Not sure how well it will work on the Windows Command line, but works great MacOS. Maybe someone will improve it using the CURSES library or something? If you make improvements, post them here.

I haven't done much testing with concurrency and how replacing files works. I think its possible for you to upload a file to the card over the WiFi interface, and verify it and the SD card interface still has an old version cached. More testing is necessary. Let me know if you discover anything. I recommend using a new filename each time just to be safe.

Anyway, this is 100% how I upload files to by bot now.  The only time I eject the card now is when I ham-fistedly accidentally press down on it with my wrists while working in the machine.

Jake

unread,
Jul 31, 2013, 8:48:13 AM7/31/13
to make...@googlegroups.com
I'd normally do more research before I just "throw this over the wall" but I'm at AirVenture this week and don't really have the time to fully research this.

The Rev G board has an unpopulated header that exposes PortD,3 and PortD,4 which I believe are the RX/TX pins of the UART1.  As far as I can tell, these pins are mapped to TX_ENABLE and RX_ENABLE in the firmware.  I think these are for RS485 comms, and not used on Mightyboards, but I could be wrong.  Perhaps a special version of the firmware could be made with the main UART0 for UART1.  Then you could connect your wireless solution to the a header rather than making modifications to the mightyboard.

I'm not suggesting that this is a GOOD solution, but its a possible solution.  I'm not sure how this would affect firmware updating, etc.  If the bootloader remains using UART0 I'd think it would still work for USB.  Also the 1280 is space constrained, so having a  UART port toggle might not be possible due to size constraints.  Anyway, just thinking out loud.

Also has anyone seen a REV H board in the wild?  Wonder what's different from Rev G?

Big-E

unread,
Jul 31, 2013, 9:00:53 AM7/31/13
to make...@googlegroups.com
Cool, I'm not too far from Oskosh; About an hour away. Thought about checking AirVenture out this year, but I've been sort of busy. Have fun :)

Richard

unread,
Jul 31, 2013, 10:24:16 AM7/31/13
to make...@googlegroups.com
Wow, nice work!

I want to make sure I understand what you are saying and implying.

So it sounds like you can communicate with the card remotely through your local network to add or remove files but you still have to go to the machine to select a file and start the print, is that correct?


Dan Newman

unread,
Jul 31, 2013, 10:32:10 AM7/31/13
to make...@googlegroups.com
I'll let Jake answer for what he's doing specifically. I just want to mention
that with, for instance, MBI's s3g.py (used by Conveyor) you could then have
a very simple python script which would then tell the bot over USB which file
to print from the SD card. (How do Cupcake users tell a bot which file to print
off of SD card? Cupcakes do not have LCD displays. A good guess is that there's
a command which tells the bot which SD card file to print.)

Mind you, if you have the latest Sailfish then you need a one line fix to
s3g.py which I can provide.

Dan

Jake

unread,
Jul 31, 2013, 4:06:16 PM7/31/13
to make...@googlegroups.com
Yes. I currently load the files to the SD over wifi and then start the print from the menus.

RocketGuy

unread,
Jul 31, 2013, 4:29:55 PM7/31/13
to make...@googlegroups.com
Thank you Sir!  

I will attempt that this evening.  I just extended my network out to the workshop, so it'd be really cool to actually use it for something besides wasting time on facebook when I should be working on something.

Paige Warner

unread,
Jul 31, 2013, 5:17:33 PM7/31/13
to make...@googlegroups.com
I'd love to know what that one line fix to s3g.py would be.  I just switched over to sailfish
and would like to start transferring my files without swapping cards.  Mind you, my bot is
only a few feet away from my mac but I still don't like swapping cards and pushing more
buttons than I have too...

Dan Newman

unread,
Jul 31, 2013, 7:27:47 PM7/31/13
to make...@googlegroups.com

On 31 Jul 2013 , at 2:17 PM, Paige Warner wrote:

> I'd love to know what that one line fix to s3g.py would be. I just
> switched over to sailfish
> and would like to start transferring my files without swapping cards. Mind
> you, my bot is
> only a few feet away from my mac but I still don't like swapping cards and
> pushing more
> buttons than I have too…

Find StreamWriter.py (streamWrite.py in older versions) and find the section
around line 116 which reads

except makerbot_driver.RetryableError as e:
# Sent a packet to the host, but got a malformed response or timed out waiting
# for a reply. Retry immediately.

self._log.debug('{"event":"transmission_problem", "exception":"%s", "message":"%s", "retry_count"=%i}', type(e), e.__str__(), retry_count)

self.total_retries += 1
retry_count += 1
received_errors.append(e.__class__.__name__)


and add a flush call so that it now reads

except makerbot_driver.RetryableError as e:
# Sent a packet to the host, but got a malformed response or timed out waiting
# for a reply. Retry immediately.

self._log.debug('{"event":"transmission_problem", "exception":"%s", "message":"%s", "retry_count"=%i}', type(e), e.__str__(), retry_count)

# We're going to go back and try again -- flush the input buffer
self.file.flushInput()

self.total_retries += 1
retry_count += 1
received_errors.append(e.__class__.__name__)

That solves the underlying problem. Conveyor sends command X and incorrectly assumes that
the response it gets back is to command X. If it gets an error response, it resends command X.
Problem is that the response may have been to line noise or another process sending data down
the wire after which there will then be a response to command X. So then Conveyor gets two
responses to the two command X's which it sent. Net, Net, Conveyor gets confused. The s3g
protocol simply doesn't adequately take comms errors into account and gets all out of sync
and confused when they happen. When the bots didn't send any error responses back, Conveyor
didn't get confused this way. However, when you don't send error responses, then Conveyor can
make other incorrect assumptions. By flushing the I/O channel, the first response to command X
is wiped and Conveyor doesn't get confused when it resends command X.

NOW, you may not be out of the woods when you make this change. You may still have
issues with Conveyor (s3g.py and support code) seeing error responses for which MBI has
not added code to handle and thus they appear as an "unknown" error rather than nicely
categorized where they belong. But for just sending a "print this file", you may/should
be okay.

Dan



Dan Newman

unread,
Jul 31, 2013, 7:30:14 PM7/31/13
to make...@googlegroups.com
TYPOS

> Find StreamWriter.py (streamWrite.py in older versions) and find the section

"streamWriter.py" in older versions.

> except makerbot_driver.RetryableError as e:
> # Sent a packet to the host, but got a malformed response or timed out waiting
> # for a reply. Retry immediately.
>
> self._log.debug('{"event":"transmission_problem", "exception":"%s", "message":"%s", "retry_count"=%i}', type(e), e.__str__(), retry_count)
>
> # We're going to go back and try again -- flush the input buffer
> self.file.flushInput()

Be sure to get that self.file.flushInput() indented correctly…. I didn't when I
cut-n-pasted things.

Dan

Paige Warner

unread,
Aug 1, 2013, 3:42:55 AM8/1/13
to make...@googlegroups.com
When did an email ever format python correctly?..

So it took me a little bit to familiarize myself with getting a python env setup
for s3g since I haven't dug into ever before. But after looking at the conveyor
code a bit and finding an entry point to a valid s3g object though MachineFactory
I was able to do this:

>>> import makerbot_driver
>>> mf = makerbot_driver.MachineFactory('/Library/MakerBot/s3g/profiles')
>>> retObj = mf.build_from_port('/dev/tty.usbmodemfa1421')
>>> retObj.s3g.playback_capture('Stretchlet.x3g')

4 lines, and now my Rep2 is printing me an orange stretchlet, I think I'll wear it tomorrow… :)

This is awesome, thanks Dan!!!
~paige
> --
> You received this message because you are subscribed to a topic in the Google Groups "MakerBot Operators" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/topic/makerbot/Rst5ZIfs5L0/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to makerbot+u...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

Paige Warner

unread,
Aug 1, 2013, 4:16:06 AM8/1/13
to make...@googlegroups.com
And here's a basic routine to get the filenames on the sd card through s3g as well:

(this is all just me tinkering in the interpreter so forgive the short names)

…continued from previous example…

s = retObj.s3g

files = []

# Get the first item.
filename = str(s.get_next_filename(reset=True))[:-1]

# Items returned are a bytearray with a trailing null (\x00) so I'm just slicing it off,
# and checking for whats left. When you hit the end of the list, the filename will
# be an empty string, which will kick us out of the while loop.
while filename:
files.append(filename)
filename = str(s.get_next_filename(False))[:-1]

print files
['Stretchlet.x3g', 'Mr Jaws.x3g', 'Comb.x3g', 'Nut and Bolt.x3g', 'Chain Links.x3g', ...]

My FlashAir is on it's way, and then my 3 foot commute from my computer to my bot will finally be eliminated! :)

~paige

RocketGuy

unread,
Aug 1, 2013, 11:12:11 AM8/1/13
to make...@googlegroups.com
Ah, had to go in via terminal and use ls -al , it's invisible in finder.  

Now to edit it with vi...

On Tuesday, July 30, 2013 6:07:53 PM UTC-7, Jake wrote:

Dan Newman

unread,
Aug 1, 2013, 2:30:22 PM8/1/13
to make...@googlegroups.com

On 1 Aug 2013 , at 8:12 AM, RocketGuy wrote:

> Ah, had to go in via terminal and use ls -al , it's invisible in finder.

You should be able to enable the display of "hidden files". (I run with
that all the time in finder.)

Dan

Dan Newman

unread,
Aug 1, 2013, 2:40:15 PM8/1/13
to make...@googlegroups.com

On 1 Aug 2013 , at 12:42 AM, Paige Warner wrote:

> When did an email ever format python correctly?..
>
> So it took me a little bit to familiarize myself with getting a python env setup
> for s3g since I haven't dug into ever before. But after looking at the conveyor
> code a bit and finding an entry point to a valid s3g object though MachineFactory
> I was able to do this:
>
>>>> import makerbot_driver
>>>> mf = makerbot_driver.MachineFactory('/Library/MakerBot/s3g/profiles')
>>>> retObj = mf.build_from_port('/dev/tty.usbmodemfa1421')
>>>> retObj.s3g.playback_capture('Stretchlet.x3g')
>
> 4 lines, and now my Rep2 is printing me an orange stretchlet, I think I'll wear it tomorrow… :)
>
> This is awesome, thanks Dan!!!

Not a problem, and thanks for posting that. I almost wrote previously that it was
a simple few lines of Python but decided not too. (What might be simple for one
person may not be for another.)

Dan

David Clunie

unread,
Aug 1, 2013, 9:30:21 PM8/1/13
to make...@googlegroups.com
I've got a eye-fi card 8gb.  I'll have to try this with my replicator2x.  Would save alot of going back and forth and allow for me to not have a dedicated netbook hooked up to the machine or running the sd card back and forth between my main machine where i do all the modeling in cinema 4d then transporting it to the sd card after a quick slice and dice in makerware....

-dclunie


On Saturday, June 1, 2013 6:48:55 AM UTC-7, Jake wrote:

Dan Newman

unread,
Aug 1, 2013, 10:18:23 PM8/1/13
to make...@googlegroups.com

On 1 Aug 2013 , at 6:30 PM, David Clunie wrote:

> I've got a eye-fi card 8gb.

eye-fi cards are one way: you can read from them over wi-fi but cannot
write to them over wi-fi.

Dan

David Clunie

unread,
Aug 2, 2013, 5:03:06 PM8/2/13
to make...@googlegroups.com
you know I didn't even think about that, but yah now i look back I was only ever pulling info down and now ever deleting or writing new info up to the card while it was in camera.  (I used to have it using a 3rd party wifi spot connect to my netbook and auto pull down the images for an "unlimited" drive space while i was out an about.  had the netbook in a back pack.)  

Too bad there isn't a way to tweek the eye-fi cards, that would be ideal for me since i don't really use the eye-fi anymore, its just faster to pull out the cards and transfer via built in sd slot on my laptop/netbook/desktop.

Jetguy

unread,
Aug 3, 2013, 12:41:46 PM8/3/13
to make...@googlegroups.com
Just got my Flash Air today and rocking the wireless transfers!!!!
Thanks for the work on this and sharing.

Andy Chen

unread,
Aug 11, 2013, 12:46:34 PM8/11/13
to make...@googlegroups.com
I got my Flash Air working today. It's awesome. Much thanks for getting this all figured out.

I made a small change to Jake's script to use a default server. Now I can do this, and I'm ready to print:

> sendx3g model.x3g
model.x3g [########################################] 100.00% DONE

Whoohoo!

MadReasonable

unread,
Aug 11, 2013, 3:02:38 PM8/11/13
to make...@googlegroups.com
I also got this working pretty easily thanks to Jake's work with the config file.  I've set APPAUTOTIME to 2147483647, or about 25 days.  The card might support max unsigned int32 or higher but this works fine for me.

Does anyone else have problems with special characters like '[', ']', or '-' ?

Dan Newman

unread,
Aug 11, 2013, 3:41:54 PM8/11/13
to make...@googlegroups.com

On 11 Aug 2013 , at 12:02 PM, MadReasonable wrote:

> I also got this working pretty easily thanks to Jake's work with the config
> file. I've set APPAUTOTIME to 2147483647, or about 25 days. The card
> might support max unsigned int32 or higher but this works fine for me.
>
> Does anyone else have problems with special characters like '*[*', '*]*',
> or '*-*' ?

I believe that the Toshiba FlashAir doesn't implement the LFN extension.
Likely the Toshiba engineers didn't want to handle UTF-16 *and* didn't want
to omit that support -- didn't want to implement a crippled (non-spec) LFN
extension. (Mind you, lots of people implement incomplete forms of LFN,
especially as regards incomplete or non-existent UTF-16 support.) And since
LFN doesn't appear to be implemented, it looks like they went with 8.3 uppercase.
And when you go with 8.3 uppercase, you are supposed to not allow any of the
US-ASCII characters

" * + , / : ; < = > ? \ [ ] |

Dan

MadReasonable

unread,
Aug 12, 2013, 12:02:34 PM8/12/13
to make...@googlegroups.com
http://haxit.blogspot.ca/2013/08/hacking-transcend-wifi-sd-cards.html
I only just saw this and haven't looked into it much, but the Transcend cards might give us a lot more capability.  This guy is connecting with a terminal and running busybox off of his.

Jetguy

unread,
Aug 12, 2013, 12:23:45 PM8/12/13
to make...@googlegroups.com
I reading it now but the first obvious thing was:
The third challenge is that the script kcard_upload.pl only allows PNG, JPG, BMP, and GIF files to be uploaded.
 
Now, he does work around it but it seems to me, 10 times harder to use and hack than the Toshiba.
In other words, in the Toshiba, I add 1 line to the config to allow uploads, and it's easy to access with no hacks required.
 
All I'm saying is that I went through this exact debate of what card to buy as there are a bunch out there. Googling wireless SD card upload is just a bunch of peopel posting about downloading photos from the camera, the intended purpose.
 
So it's good to know that maybe in a pinch this card can work, but I say hands down if you just want to use it and are not  hacker, get the Toshiba .
If you had both in a shopping card and the Toshiba was $20 more, I STILL would buy it.

MadReasonable

unread,
Aug 12, 2013, 12:53:57 PM8/12/13
to make...@googlegroups.com
I agree that the Toshiba FlashAir can be made to work very quickly and wouldn't recommend the Transcend card to anyone who wants something that just works.  I might pick up the Transcend to work on as a hobby,  Once all the pieces are in place it might be just as easy as the FlashAir but with fewer limitations.

Kian Ann

unread,
Aug 22, 2013, 1:43:15 PM8/22/13
to make...@googlegroups.com
Hi Jake,

First of all, thanks for sharing this information with us. I have tried the upload feature and its working.
However, I'm unable to make this card to connect to existing network. 
I have changed the APPMODE=5 , APPSSID=MySSID and APPNETWORKKEY=MyPassword but I cannot access the card with http://flashair/.
However, my existing wifi router is using (192.168.0.1), perhaps there is clash in ip address?
Can you share more how you can make this card connect to wifi network instead of broadcasting its own?
Many thanks in advance.

Regards,
Kian Ann

Paige Warner

unread,
Aug 22, 2013, 4:26:17 PM8/22/13
to make...@googlegroups.com
Hi Kian,  

You'll also need to add UPLOAD=1 to enable the uploading feature of the card.
And unless you setup /etc/hosts or DNS you won't be able to access the card with
a url like: http://flashair

You'll need to use the actual ip address that the router assigns to it, which would be
something like: http://192.168.0.#  
where # is the individual address of the card. It won't be 1, because that is the router's own address.

To see what ip addresses are assigned on your router's network, either login to your router's admin
site, or try running the following command from a console (assuming your using mac osx or linux)
ping 192.168.0.255

This will output messages like:
PING 192.168.0.255 (192.168.0.255): 56 data bytes
64 bytes from 192.168.0.21: icmp_seq=0 ttl=64 time=0.250 ms
64 bytes from 192.168.0.12: icmp_seq=0 ttl=255 time=1.910 ms
64 bytes from 192.168.0.14: icmp_seq=0 ttl=100 time=3.813 ms

From this I knew to try the numbers 12, 14 and 21.
Then try the full upload url, using each of the addresses that respond, until you find a match

This is how I discovered the address of my flash air card since I don't have admin access
to my home router (my employer's hardware).


Cheers,
~paige





Scott Goldthwaite

unread,
Aug 23, 2013, 8:40:25 AM8/23/13
to make...@googlegroups.com
I'm unclear about what self.file.flushInput() is fixing.  From your explanation it sounds like it's making USB communication more reliable by dealing with errors.  How does that let you tell the bot which file from the SD card to print?  It seems like there are two different things going on here and I'm missing one of them.

Dan Newman

unread,
Aug 23, 2013, 12:08:22 PM8/23/13
to make...@googlegroups.com

On 23 Aug 2013 , at 5:40 AM, Scott Goldthwaite wrote:

> I'm unclear about what self.file.flushInput() is fixing.

It's fixing makerware/conveyor. If you do not understand what it is doing,
remove it and see what the code does. Namely, it's possible that garbage
has previously been sent down the serial line to the bot. When MW tries
sending data, enough bytes get pushed through to cause the bot to send
back an error response and then a response to the valid command from MW.
MW, however, sees the error response to the garbage in the pipeline and
simply resends the same command over again. Then MW sees a nice response
to the first command it sent, and then sends some other command. To that
other command, it sees the nice response to the resend of the first
command. This confuses MW. RepG, btw, never had this issue: it knew
about this case. So, obvious workaround is to have MW flush it's
input buffer before resending a command a second time.

BTW, this would not be a problem if years back MBI correctly implemented
the s3g "clear buffers" command. However, they implemented that as a
"reset the uprocessor" command and thus it has unwanted side effects.

> From your
> explanation it sounds like it's making USB communication more reliable by
> dealing with errors.

Correct. And MW wasn't correctly dealing with errors.

> How does that let you tell the bot which file from
> the SD card to print?

It doesn't.

> It seems like there are two different things going
> on here and I'm missing one of them.

Point being that if you're going to lift some code from MW/Conveyor, then
you may also need a fix to that code which, when I wrote that, MBI had not
yet shipped. And, Sailfish 7.5 had restored sending s3g errors -- something
the MBI firmware used to do in the past (and thus RepG handled). But in
some push-me-pull-you error fixing by MBI about two years ago, someone
commented out in the firmware where it would return s3g error responses.
(Instead, it would return nothing.) Problem with not returning error
responses is that both RepG and MW would, after not getting a response
N times to a command would then just skip that command and send the
next one in the queue. So, things like heaters might not get turned
off or digipots not get set correctly, etc., etc. And we discovered
this in Sailfish when we had a documented, reproduceable case which
a user found and reported. Jetty and I diagnosed it and fixed it in
Sailfish and then reported it to MBI and worked with their engineers
on addressing it in their firmware and MakerWare.

Dan

Jetguy

unread,
Aug 31, 2013, 7:28:43 PM8/31/13
to make...@googlegroups.com
OK, so I am in the process of testing the time to keep the WIFI active.
By default per the above config, it looks like it active for 5 minutes?
"APPAUTOTIME is the time before the card shuts down the WiFi (in 1/1000's of a sec).  "
Current default is APPAUTOTIME=300000
3000000/(1000x60secondperminute)=5 minutes
 
So I have entered

APPAUTOTIME=9999999999999999999999999999999

9999999999999999999999999999999/ (1000x60secondsperminute X 60minutesperhour)=2777777777777777777777777.7777775 hours

It took the config, so checking how long it keeps the wifi active now. Fingers crossed.

Jetguy

unread,
Aug 31, 2013, 8:07:00 PM8/31/13
to make...@googlegroups.com
So far so good!!! In theory, that should leave it on longer than you'll ever think about leaving your MakerBot on.

Jake

unread,
Aug 31, 2013, 8:12:25 PM8/31/13
to make...@googlegroups.com
So I never followed up on this, but I've never really had a problem with it timing out when in 'join a network' mode. It's possible that the timeout only applies when the card is in base station mode? I don't really leave my bot on unless it's in use, so it's quite possible that timeouts do occur for bots left on for weeks at a time. I'll be interested to know what you find out.

Jetguy

unread,
Aug 31, 2013, 8:21:43 PM8/31/13
to make...@googlegroups.com
Right, I'm running in access point mode so it's good to know both behaviors.
I'm pretty sure I was previously seeing the timeout in access point mode. This would force me to eject the card and reinsert, defeating the purpose of leaving it in the slot.

PhGeis

unread,
Sep 26, 2013, 10:03:30 AM9/26/13
to make...@googlegroups.com
HI Guys I bought and installed the card.. everything fine but trying to upload I just get NG as message not once Success tried with safari, IE and chrome... HELP

Jetguy

unread,
Sep 26, 2013, 11:47:50 AM9/26/13
to make...@googlegroups.com
Did you also know that the file attempting to be uploaded must be in 8.3 format?
In other words, no special characters, 8 letters and number max for the name?

Jetguy

unread,
Sep 26, 2013, 11:49:20 AM9/26/13
to make...@googlegroups.com
So "file1.x3g" works, but "mylongfilename.x3g" doesn't

Jetguy

unread,
Sep 26, 2013, 11:56:42 AM9/26/13
to make...@googlegroups.com
And, there are a series of assumptions here:
If you modified the config, then you will get the upload page, otherwise it is never presented when hitting it with the web browser.
 
So the decision tree works like
Do you actually get to an upload page?
Yes= you did modify the config
No= go back and modify the config file on the SD card
 
You get an upload page but uploading fails
Is the filename 8.3?
How large is the file?
Is the SD card full?
 
So in my usage, I made a folder called SD uploads on my hard drive. I use Replicator G Sailfish to create the gcode and then write the X3G to that folder. I then rename the file to proper 8.3 format and then use the upload webpage to point to the SD uploads folder where the properly formated file exists.

Dan Newman

unread,
Sep 26, 2013, 1:35:09 PM9/26/13
to make...@googlegroups.com

On 26 Sep 2013 , at 8:49 AM, Jetguy wrote:

> So "file1.x3g" works, but "mylongfilename.x3g" doesn't

Actually, it may have to be upper case as well. I don't know offhand if
the Toshiba card will translate it to upper case automatically or not.
What you're dealing with is a very strict FAT-16 implementation which
lacks the long filename extension. And thus you're stuck with 8 x 3
with additional restrictions such as uppercase only.

Dan

Jetguy

unread,
Sep 26, 2013, 2:26:59 PM9/26/13
to make...@googlegroups.com
It didn't require uppercase, but as an FYI when it writes it to the SD card it ends up that way.
So mostly for the upload screen, it's a strict character limit as far as I know.

PhGeis

unread,
Sep 26, 2013, 2:39:53 PM9/26/13
to make...@googlegroups.com
yes restricted to 8.3 ! now I found that if I keep pinging the card after 30sec or so it gives me host not found! I eject and reput the card same game. here is my config:

[Vendor]

CIPATH=/DCIM/100__TSB/FA000001.JPG
APPMODE=5
APPSSID=Office
APPNETWORKKEY=************
APPNAME=MAKERBOT
UPLOAD=1
APPAUTOTIME=999999
VERSION=F24A6W3AW1.00.04
CID=02544d5357303847075001b68e00ca01
PRODUCT=FlashAir
VENDOR=TOSHIBA
LOCK=1

Jetguy

unread,
Sep 26, 2013, 2:46:45 PM9/26/13
to make...@googlegroups.com
Correct, because you failed to edit this line
APPAUTOTIME=999999
 
That, per the directions is how long the card leaves the wifi on.
From Jake in the original post
"APPAUTOTIME is the time before the card shuts down the WiFi (in 1/1000's of a sec). It seems to me that removing this key completely doesn't leave the card active indefinitely, so I've gotta try putting in a large number there."
 
See, in this post above I spoke about changing that https://groups.google.com/d/msg/makerbot/Rst5ZIfs5L0/reZf7dk8XosJ
 
So I have entered

APPAUTOTIME=9999999999999999999999999999999

9999999999999999999999999999999/ (1000x60secondsperminute X 60minutesperhour)=2777777777777777777777777.7777775 hours

And I then replied that it does accept that and did work.

https://groups.google.com/d/msg/makerbot/Rst5ZIfs5L0/cG3RWUCoEh4J

 

PhGeis

unread,
Sep 26, 2013, 3:37:52 PM9/26/13
to make...@googlegroups.com
so itis actually important to have all these 9´s? thought it is okay to have some high value.

gone try!

PhGeis

unread,
Sep 26, 2013, 3:43:29 PM9/26/13
to make...@googlegroups.com
Okay no I get a stable ping and the uploadd page comes up but as soon as I push upload the ping is broken and it shows no host ! and teh upload failes. I dont find the card anymore

PhGeis

unread,
Sep 26, 2013, 3:43:31 PM9/26/13
to make...@googlegroups.com

Gary Crowell

unread,
Nov 15, 2013, 5:50:57 PM11/15/13
to make...@googlegroups.com


On Thu, Sep 26, 2013 at 1:43 PM, PhGeis <dr.p...@gmail.com> wrote:
Okay no I get a stable ping and the uploadd page comes up but as soon as I push upload the ping is broken and it shows no host ! and teh upload failes. I dont find the card anymore

--
You received this message because you are subscribed to the Google Groups "MakerBot Operators" group.
To unsubscribe from this group and stop receiving emails from it, send an email to makerbot+u...@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.



--
----------------------------------------------
Gary A. Crowell Sr., P.E., CID+

3DwannaB

unread,
Nov 15, 2013, 6:30:02 PM11/15/13
to make...@googlegroups.com
That would explain why I am seeing the older versions selling at discount

Jetguy

unread,
Nov 15, 2013, 11:11:30 PM11/15/13
to make...@googlegroups.com
Well, while faster is better, we KNOW the old version works with the bot and flash speed really had nothing to do with our usage of the card. Nothing we do is even close to hitting class 6 speeds.
 
So I see this as a win-win. Just checked on Amazon, you can get an original card for $37 Prime.
Honestly, one of the best upgrades you can do for workflow!!!
No wires, just print!!!

Michael Nichol

unread,
Nov 16, 2013, 8:49:05 PM11/16/13
to make...@googlegroups.com
So these prettygood..??
 
I guess me order one ....
 
Awesome

Wingcommander

unread,
Dec 7, 2013, 8:36:27 PM12/7/13
to make...@googlegroups.com
So I have entered

APPAUTOTIME=9999999999999999999999999999999

Just a little follow up. According to the spec https://flashair-developers.com/en/documents/api/config/#APPAUTOTIME

The maximum value here is 4294967294 which is equivalent to about 50 days, which should be enough =)

Jetguy

unread,
Dec 7, 2013, 8:40:23 PM12/7/13
to make...@googlegroups.com
Cool!!! Thanks for that link as there is a lot of great info there.

Jake

unread,
Dec 7, 2013, 8:48:47 PM12/7/13
to make...@googlegroups.com
Wish this was available months ago, it would have saved a lot of time reverse engineering!

Joseph Chiu

unread,
Dec 8, 2013, 1:57:12 AM12/8/13
to make...@googlegroups.com
Or 0 to disable auto timeout, apparently. I should just buy this and be done with my shuffles!



-- Sent from my HP TouchPad

--

PhGeis

unread,
Dec 16, 2013, 10:36:06 AM12/16/13
to make...@googlegroups.com
Hi Guys still fightiung and I just dont get it running ar all! tried everything here on the fred an d dont even find it on my network appmode 4 seams to work but 5 no chance! dont have an idea why. tried even firmware upgrad which does not want to work aswell.

Is there any alternative hardware to the flashair which is known to work? even more price is not a problem as long as less frustrating!
Does the new flashair work the same way ?

Jetguy

unread,
Dec 16, 2013, 11:26:38 AM12/16/13
to make...@googlegroups.com
Just some basic thoughts here.
 
The card is simply presenting a storage area on a wireless LAN. As such joining it to your normal network might be somewhat of a security risk.
Any user, virus, or whatever can hop on your network and distribute say bad code/ virus/ trojans / whatever from this NO security network storage.
You might reply (well my network is encrypted) which is where you are fooling yourself, that is one layer of shoddy security. Once on your network, you are making yourself a desireable and vulnerable target. 
In other words, sure mode 5 might seem attractive and sure, it is convienent to not have to point your laptop to the card's access point but it cause more problems than it's worth.
When you take what is ideally a static IP web server and then throw it into the mix of the rest of your DHCP network, good luck finding it and so on.
The other thing is that you really, really, really, should have extreme understanding of wireless netowrking, protocols, how your wireless router is configured and so on.
 
This is a hack and as such, there are probably a million caveats. One could be that is doesn't play well in mixed B-G networks or maybe it's not 100% "N" network compliant.
Who's to say you don't have your wireless network router in a config that excludes the protocol that the flash iar operates in (Say "N" mode only)?
 
Now, on to other brands and options, well that's even worse news for you. It's generally agreed the Toshiba is the best option. Many of the other cards and brands are not even hackable to allow upload. At least we know the Toshiba is hackable, does allow the all too critical upload rather than download only, and again it just works.
 
I know that it's frustrating for you, but because this is a hack, because we have NO control over the network you are trying to attach this to, because we have no idea of your knowledge of wireless networking protocols and standards, it's reall hard in a forum to tell you why you cannot get it to connect in mode 5 to your network.
 
One thing is certain, if this brand didn't work for you, getting another brand to function in this method should be considered all but impossible.
 
Sorry, I'm not trying to agrevate you or frustrate you even more. But, as I stated, your problem  is NOT easily solvable without revealing a whole lot in public about your network.
We'd have to know what router you are running, your IP ranges, DHCP, other devices, firmware, what settings are on the wireless, what your password is (could be your paraphrase is incompatible with Toshiba), maybe it's the encryption standard, or maybe your QOS settings. What are your neighbors running and what other wireless signals walk on your network?
 
Sorry, but most people don't even have the common sense to understand that most wirelss routers default to channel 6 and that if they all do that, your throughput can be DOUBLED or more just by changing your router and network to channel 1 or 11, the ONLY 2 other channels that do not intefere.
 
I only use mine in mode 4, with encryption. I have several of these, each in a bot and named the SSID for each card the name of the bot. I simply connect my laptop to that SSID of the bot, then upload and it done. I don't like being on the internet and the storage device at the same time, again, basic risk of unsecured network storage. If you've ever seen a nasty virus/worm spread, you'd understand why I take this seriously.
Also keep in mind, say you bring your work laptop home and attach to your network. Well, how fast would you get fired if your work laptop gets infected from the open fileserver that is is your flash air network SD card holding 16GB of code?
Basic rules, Isolate, Segregate, and Mitigate Risk.

PhGeis

unread,
Dec 17, 2013, 5:37:09 AM12/17/13
to make...@googlegroups.com
Point taken! I totally agree and I am not willing to spread out all my network settings. 

Tried everything by now which is in my knowledge to get it running and even so limited it is more than totally basic.

Gone switch to app mode 4 as recommended by you.

my aim would be to have the sd-card on the Ethernet. that would be best. Do you have any idea how This would work? my printer is in the basement and i would like to transfer teh x3g whithout running around with cards anymore.

Philipp  

Jetguy

unread,
Dec 17, 2013, 7:43:36 AM12/17/13
to make...@googlegroups.com
Right now, the flash air STILL is the best option in terms of reliability and no change to the system.
In other words, just use mode 4 and connect to the bot when you need to upload. I use Windows 7 computers and it's a simple task of going down to the lower task bar, clicking on the wireless icon, and double clicking the Toshiba Flash air network from the list. Then in my web browser, because I've hit is so many times, the upload link is there and I click on it and now I'm connected. I transfer all the files I need for that print session and then go down to the bot and start the jobs. You act like connecting to another wireless network is some cumbersome task.
Key features that make mode 4 nice:
The IP of the upload page is ALWAYS the same
It is a secure isolated connection between your computer and the bot (yes, limited security but better than nothing, I did set my Air card with WPA and paraphrase)
It's only a few mouse clicks away

The alternative sucks right now, the http://www.kickstarter.com/projects/companje/doodle3d. I kind of knew this would happen based on all the understanding provided by Dan of the Sailfish team on the S3G protocol MakerBot uses over USB. Basically, that is a mini computer running the stripped down communications layer of something similar to Rep-G. You send it  Gcode across your wireless network, it then converts the file and sends it over USB.
The reports thus far is that it's very buggy and crashes often. Just like your problems with the flash air, some folks cannot get it to connect to their network. The  bottom line is you introduce even more problems into the workflow. The bot now depends on this mini computer that has proven less than reliable to keep running with no glitches during the entire print. All the common failures that can happen anytime you print from USB apply here. It's another device that requires a power adapter next to the bot. If anything bumps the USB or power, it could cause a glitch and print failure. Because the firmware in the bot is changing over time, so must the firmware/software on the Doodle 3D to match those changes. You get caught in a leapfrog problem because new firmware is released but you may not have an update for the Doodle for some time while they reverse engineer the firmware changes. I originally was going to back this one because it was mildly interesting but again, knew there would be the exact issues they are having. Guys over in the Ultimaker forum are also having problems with it. That shows that it's the device, not just an issue with MakerBot's specifically.


Finally, there is one new product that is pretty cool and I am retrofitting many of my machines http://www.adafruit.com/products/1588
While most Bluetooth modules are not great like the older ones Sparkfun still sells, this one can properly act the same way that the USB to serial conversion on the mightyboard works.
I would not print across it due to latency and reliability alone but it does work great if all you want to do is tell the bot to print from SD card.
It even allows firmware flashing because it can properly change baud rates. That said, I think Makerware still uses the connection USB ID do identify valid MakerBot com ports. Because this is a totally different ID Makerware might not even see the bot.

There are alternatives. They have even more problems than your frustration with the flash air.

Jake

unread,
Jan 17, 2014, 6:00:22 PM1/17/14
to make...@googlegroups.com
I've taken to using Dropzone, a Mac app that takes Ruby plugins to upload to the FlashAir.  I packaged the script and instructions and posted them here: 

http://www.extrud3d.com/dropzone

Makes it easy to upload to the FlashAir, and does a verification step to make sure the file was transferred correctly and completely.

Much nicer than the web interface.

On Saturday, June 1, 2013 9:48:55 AM UTC-4, Jake wrote:
Over on another thread, there was some discussion on using a WiFi enabled SD card in the Replicator.  (https://groups.google.com/d/topic/makerbot/vycvaKTwue0/discussion) A few options were discussed, including the EyeFi and the Toshiba FlashAir.

I decided to buy a Toshiba FlashAir and see if I could get it to work.  The ability to both download from and upload to the card is listed as a feature, and mentioned in many reviews.  Unfortunately, there is no mention of the upload feature in the documentation or in the card's UI.  Out of the box, the card broadcasts as a WiFi base station.  When you connect to the card's SSID, you then get a web server that allows you to read the files on the card.  That's about it. Settings are configured by a text file stored in a directory on the SD card.

Luckily, it seems like there is a trove of undocumented features on the card, including upload ability, and the ability to join an existing network.

So what's the secret sauce?  Its all in the CONFIG file:

[Vendor]
CIPATH=/DCIM/100__TSB/FA000001.JPG
VERSION=F24A6W3AW1.00.03
CID=02544d53573038470750031e0c00cc01
PRODUCT=FlashAir
VENDOR=TOSHIBA
UPLOAD=1
APPMODE=5
APPNAME=Makerbot
APPSSID=MyNetworkName
APPNETWORKKEY=MyNetworkPassword
LOCK=1
APPAUTOTIME=300000

The key is the undocumented "APPMODE" setting.  APPMODE=4 (default) will make the card broadcast its own network.  APPMODE=5 (undocumented) will have the card connect to your exisitng network.  APPNAME is the host name the card uses when in APPMODE=4, not sure it does anything when APPMODE=5.

The second key is the "UPLOAD=1" line, which enables the upload functionality.

LOCK=1, as far as I can tell, informs the card whether the initial setup has been performed.  APPAUTOTIME is the time before the card shuts down the WiFi (in 1/1000's of a sec).  It seems to me that removing this key completely doesn't leave the card active indefinitely, so I've gotta try putting in a large number there.

Other settings that exist but I haven't really played with: APPSSID, APPCHANNEL, HTTPDMODE, HTTPDUSER, HTTPDPASS, APPMINTIME, APPMAXTIME, DNSMODE, REDIRECT, APPEXT, APPTYPE, AGINGTIME, WLANSTAMODE, DOMAINNAME, APMODE, NOGATEWAYMODE

Uploading is simple,  just go to <SDCARDIP>/upload.cgi.  A very small HTML form will appear where you can pick a file and upload it.  You'll get back "Success" if it worked an "NG" (No Good?) if it didn't.  You can also use curl from the command line

 curl -F file=@FILETOUP.x3g -F submit=submit http://SDCARDIP/upload.cgi
 
There are some limitations.  First, the upload feature only supports 8.3 filenames.  Second, any files uploaded are uppercased.  So "NewArm.x3g" becomes "NEWARM.X3G".  Current versions of bot firmware will only show lowercase extensions, but Dan has kindly decided to tentatively include a case insensitive filter in the next release of Sailfish.  (It takes up some precious bytes, so it may eventually need to be removed someday)

Thirdly, the card doesn't seem to stay connected to the network indefinitely.  The card is designed for cameras, and leaving WiFi on while you're out taking pictures would be a battery drain, so it shuts down in a predefined internal.  (Configurable).  Also, I'm not sure how stable their WiFi/IP stack is.  I'm hopeful that I (or someone else) can figure out how to get it to stay on and connected permanently.

Finally, the card's a little slow, but its not terrible for transferring X3Gs.

I have not tried changing files in use by the bot during a print.  I think that would be a bad idea.

Anyway, there more but I think this post is long enough for now.  Is it worth $50 for one of these cards?  MAYBE-- it has potential if we can get the network link to stay online and reliable.  Even without that, it still might be preferable to swapping out SD cards all the time.



Philip Butler

unread,
Feb 23, 2014, 3:41:31 PM2/23/14
to make...@googlegroups.com
Thanks for the info!  I set up my FlashAir as a client on my local network per the instructions you laid out.  Is there any way to delete files without an SD reader?

Jake

unread,
Feb 24, 2014, 11:08:49 AM2/24/14
to make...@googlegroups.com
There is a way to delete files from the card over the web interface.  I wrote an experimental replacement for the FlashAir user interface. I use on my v2 card. I'm not if it’ll work with a v1 card, but it should.

This replacement UI for the FlashAir gives you a few more features on the web interface:
  • Delete files from file list
  • File upload progress
  • Verify file size of upload to insure that it matches what’s on the FlashAir. (not a full diff like I do with the python script, due to javascript limitations)
  • Drag and drop on browser window to upload.


Do write back in this thread in the group to let me know how it works for you.  Its "experimental" because I haven't really done thorough testing.  As always, use at your own risk, etc.

andre

unread,
Mar 23, 2014, 1:25:43 AM3/23/14
to make...@googlegroups.com
Upload says "Done!", file exists and matches, but page reports "Error: something went wrong". 

Jetguy

unread,
Mar 23, 2014, 6:31:37 AM3/23/14
to make...@googlegroups.com
Back to the limits of the system.
File name cannot be greater than 8 characters and cannot begin with a number if I remember correctly.

So fanbrkt1.x3g works
fanbracket.x3g doesn't

Jake

unread,
Mar 23, 2014, 7:01:35 AM3/23/14
to make...@googlegroups.com
This might be a bug that was recently reported to me related to the replacement FlashAir UI and V1 cards.  The UI's source code doesn't UPPERCASE the filename before the verification step, so it can't find the file.

If you can upload/verify file size of files with ALL UPPERCASE filenames, then this is your issue.  I have to modify the code for and do this uppercase step before trying to do the file size check.

andre

unread,
Mar 23, 2014, 10:42:55 AM3/23/14
to make...@googlegroups.com
I have the V2.  My files upload with the same case (lower case actually), and I am using 8.3 convention.  The files transfer fine, the printer sees them, all is well.  Just the pop-up shows up with that message...

Jake

unread,
Mar 23, 2014, 10:53:14 AM3/23/14
to make...@googlegroups.com
after uploading the file, the javascript reloads the file list from the FlashAir, and looks for a file in the list with the same filename.  Then it checks the file size of the item in the list against the file you just uploaded.

Basically, the javascript is having difficulty finding a file from the FlashAir file list that matches the filename of the file you uploaded, and hence it can't do the file-size check.

andre

unread,
Mar 23, 2014, 11:56:10 AM3/23/14
to make...@googlegroups.com
I see.  The file is there, perhaps it needs some delay for confirmation.  I thumbed through the javascript to locate the issue.  I'll try to dig into it on my end, but since I'm not the only one seeing this, could be implementation related...

andre

unread,
Mar 23, 2014, 12:13:40 PM3/23/14
to make...@googlegroups.com

I understand this is not something you plan on fully developing, but here is some feedback:

-  If I move the "drop" icon over a bit (drag), It thinks it's a new file and begins to upload it
-  After trashcan-delete, I need to refresh the page to show the file is gone

Alas, this seems to be a IE11 issue, since Google Chrome behaves as expected.  Joy! 

andre

unread,
Mar 23, 2014, 3:13:59 PM3/23/14
to make...@googlegroups.com
I just uploaded a file name glassalignmentbkt.x3g.  Uploaded fine, bot sees it and prints the file. 

Scott K

unread,
Apr 9, 2014, 10:14:12 PM4/9/14
to make...@googlegroups.com
I can also confirm, the new V2 of the FLashAir updated to the newest Firmware, accepts whatever name you give the file.  Long names, spaces in the name, special characters, etc.  No need to stick to 8.3 if you have the newer card and newest firmware.

Jake

unread,
May 2, 2014, 11:30:33 AM5/2/14
to make...@googlegroups.com
Long overdue (he sent me this in March) fix provided by Jared Wellman that fixes an issue with v1 cards in the replacement UI-- basically the filenames on V1 cards are uppercased by the card... and the JavaScript was then looking for the original mixed-case filename when trying to do the file-size compare.

Scott K

unread,
May 2, 2014, 2:59:17 PM5/2/14
to make...@googlegroups.com
I tried very hard to get this to work (3 different routers) and could never get it reliable enough to serve the purpose.  Sometimes it would transfer at decent speeds, other times it would be super sluggish.  SOmetimes it would be transferring and then just lock up, requiring me to remove and reinsert the card.  A couple prints crapped out because of corruption in the transfer...

Long story short, I didn't find the W-02 card to be ready for prime-time.  You guys may have had better results but the 3-4 people who tried them on the FF forums, had similar issues as me.

Jake

unread,
May 2, 2014, 3:07:47 PM5/2/14
to make...@googlegroups.com
I've been pretty successful with my W-02 card.  I have a dedicated router within 4 feet of my bot to make sure I've got a clear and reliable signal.  (The antenna on the SD card can't be that great)  

Also, despite writing this javascript UI thingy, I really use a python script (or a dropzone script) that does an upload, and then a download-and-compare operation.  This way, I can tell if there is a file upload problem.   To be honest though, I have rarely had an upload failure.  I do like knowing that there's a byte-for-byte compare taking place before going to hit the "print" button.

I do get slow upload speeds at times, but nothing unusable.   Yeah, its only a few megs and should only take a few seconds, but if it takes 45 seconds or so for a slow upload, I still find that acceptable considering the convenience.

Scott K

unread,
May 2, 2014, 10:34:42 PM5/2/14
to make...@googlegroups.com
If it were just slow on occasion, no problem (45 seconds for 2-3 meg never made me feel comfortable that the file was being transferred correctly).  The issue I was getting tired of was that it would lock up.  All of my routers were only a couple feet away as well.  I actually got better speed results by moving it about 15 feet away.

In the end, for me it was only saving me a 10 second walk and was more of a total laziness/cool factor.  After 5-10 hours of dicking with it, I gave up and now I burn 5 more calories a day doing it the old fashion way.

Jetguy

unread,
May 3, 2014, 10:03:36 AM5/3/14
to make...@googlegroups.com
Until your SD card slot fails.

Jetguy

unread,
May 3, 2014, 10:53:04 AM5/3/14
to make...@googlegroups.com
Sorry, I know many of you are complaining about speeds but maybe you just don't "get it" with wireless.

By this I mean most folks are completely clueless about the "rules" of wireless communications. Just because you got your wireless to work and you know how to set an SSID, the general public has no concept of a collision domain or hidden nodes.

So, rather than just throw you under the bus, here is the wireless 101.
Yes, you can have tons of wireless devices and they all talk to each other. However, they CONSTANTLY interfere with each other if certain rules are not applied.
All radios are no different than some old school walkie talkies. You can transmit and EVERY device within range "hears" that signal. If they attempt to transmit at the same time and are on the same frequency then the 2 signals will interfere and EVERYONE gets garbage noise. As part of the protocol, this is called a collision when 2 devices try to TX at the same time. This happens thousands of times a second. The idea is that in the protocol, there is a backoff timing built in. So after a collision is detected, all devices start a random seeded timer and then attempt to transmit again. If a second collision occurs, a longer backoff time happens.

Also keep in mind the bandwidth is SHARED across the medium. By medium, understand this concept fully as well. Each transmitter on the same channel is a node. In physical space, imagine a giant dome around each device and the ENTIRE area of all nodes spaced including the outer edges. As an example, take the typical ranch style home. Say that you have the access point in a middle room, a laptop in the far bedroom on one end of the house and a another desktop in the other far end. If you draw a 100ft circle around each device, you can see from an overhead view the total footprint likely extends past the typical half acre yard. If your neighbor ALSO has wireless their circles and your circles LIKELY overlap at the far edges. So, keep in mind that the rating of the speed of your device assumes that the air space around you is completely open and has NO other signal. SO that airspace or channel you reside on has X bandwidth in a best case scenario. Each device gets a time slice of that total bandwidth. So if you have 3 computers and a router, AT BEST each device gets 1/4th the advertised max bandwidth. This then also needs to go back to the concept of channels. Sure, wireless 802.11 has 11 or 14 channels depending on what country you are in. However, in the US, only 3 channels are COMEPLETY non-overlapping. Those are 1, 6, and 11. Most routers default to channel 6. If everyone is on 6 including your neighbors, now, instead of your 4 machines getting 1/4 of the bandwidth of the air space channel, now it's shared with you and every neighbor on the block. Just because you have separate SSIDs, the physical medium of the channel is still shared even with the slightest overlap. If ANY device on your network can see another wireless network and that network is on the same channel, it is eating into your timeslice of bandwidth. So again, the basic idea is that every house in neighborhood needs to change the channel of your network to either 1, 6, or 11 in an alternating pattern so that no two houses next to each other are on the same channel and really, in an ideal world, 2 or more houses spaced apart on the same channel.

Then, we need to cover the REAL killer of bandwidth, HIDDEN NODE. When you set up your network, the air space channel and your entire transmit domain area and receive area determines how much bandwidth you get.
In a simple network with no neighbors, if the two devices furthest from each other cannot TX or RX to each other then they are considered "hidden nodes". Your network will work but will be slowed by CONSTANT collisions and the backoff time period.  The reason is simple, the router is the master device for the network. When both nodes transmit and hit at the same time, the router hears this collision and tells EVERYONE to back off. Because the nodes cannot "hear" each other, they cannot check if the air is clear before they transmit thus increasing the likelihood of collisions. Further, lets add to real scenario where your neighbor has a laptop at edge of your property and you also have a laptop at the edge and you and your neighbor are both on channel 6. One of your nodes can hear their network. So, it will wait to transmit until the air is clear. Since your router is further away from the neighbor's laptop, it cannot directly hear it. So what happens is that your neighbor's network amplifies the hidden node factor causing even more excessive collisions because the air space is in fact shared but not all devices can see that "sharing". When ever they cannot see each other, a device may transmit and collide in time of transmit and because the networks overlap, it's STILL a collision. You and your neigbors network battle it out constantly and everyone is constantly backing off, you might only get 1% of total theoretical bandwidth.


Again, this concept is no different than 2 groups trying to talk in a large room. Sure, you can talk to the person next to you but if everyone does this, it's a dull roar in the room. If both groups sit at opposite ends of the room in a circle. the problem is to shout across the circle in each group, now that may interfere with the folks in the other group who end up being within earshot. Suddenly, it's only one person can talk at a time. Since it's 2 groups, raising hands withing the group doesn't work as there are 2 group leaders who cannot also watch the other group. All they can do is keep telling everyone to wait their turn which rarely if ever comes around.


So, the problem here is the wireless SD card is a network just like your normal wireless network and your neighbor's wireless network. You can easily create a hidden node with the ToshibaFlash air because it has limited wireless range. So just because your router sees it, the hidden node on the other side of your network cannot leading to a massive reduction in bandwidth of the ENTIRE network.
In an ideal world, you do a network survey and map out ALL wireless signals sensed by each node. You make a note of what channels are used by both YOU and your neighbors. You then decide which channel (1, 6, or 11) that has the least amount of interference from your neighbors. You also might take into account it might be smarter to make 2 logical networks such that the Flash air is it's own channel and network and you connect the laptop or computer to it since it can be it's OWN access point on it's OWN free channel and airspace. This eliminates the hidden node problem of when the flash is your network.

Jetguy

unread,
May 3, 2014, 11:07:42 AM5/3/14
to make...@googlegroups.com
Again, if what I have said isn't clear, take away these rules for wireless and especially with this Toshiba Flash air.

ALL devices on a wireless channel share bandwidth, even if not part of the same logical network. If you are on channel 6, your neighbor is on channel 6, or worse, EVERYONE is on channel 6, you are screwed until you either switch to channel 1 or 11.

Even in your own network, if any two devices are far enough apart they cannot "see" each others DIRECT wireless signal, they will cut your bandwidth in half or worse. In this case, keep in mind because of the SD card form factor, low power requirements, and lack of an external antenna, the Toshiba Flash air has a MUCH smaller wireless radius and likely will create a hidden node if attached to your normal wireless network thus choking the bandwidth. Absolute worst case scenario  is where the laptop you are sending the file from can see the router but not the flash air card. Guaranteed collisions and instant bandwidth killer. This is likely because again, the reason you may be using the flash air is to extend wireless to a device in one room, and then send a file across your network, through the router to the card. By the very nature, this means there is distance between the computer and the card.

So, for absolute BEST performance, always perform a site survey of all wireless signals seen by ALL devices, not just the router. Change the config on the Toshiba flash air to be it's OWN channel separate from your network and other networks. Use the card as an access point (AKA it's OWN SSID) acting as a mini wireless router. Connect ONLY the laptop or computer you want to send files from to that network when you want to use it.
YES, this takes effort for you to point your computer to a different wireless network to upload files. If you want performance, this is the way to get it.

Jetguy

unread,
May 3, 2014, 11:34:11 AM5/3/14
to make...@googlegroups.com
Further reading and nice pictures on the subject at hand http://computer-help-tips.blogspot.com/2011/04/wireless-hidden-node.html

Again, most likely you folks complaining of speed issues are:
Attaching the flash air to your existing wireless network.
Creating a hidden node due to the limited range of the flash air.
Most likely already had interfering networks with neighbors that is exaggerated when the hidden node problem the flash air creates is attached to the network.

The solution is:
NOT attach the flash air to your existing network.
Change the channel of the flash air to be different than your existing network.
Connect to the flash air directly using the computer when you want to upload files rather than moving through your existing and now slow wireless network.

Keep in mind, this is NOT a problem with the Flash Air or firmware or your router. This is a fundamental lack of understanding of how wireless really works and the rules behind optimizing your network to counteract interference generated by neighboring networks. Also note, buying a new more powerful router doesn't solve the hidden node problem. In fact, it makes hidden node and collision with neighboring networks even more likely and possibly slows down the network, not speeding it up. The only way to mitigate to eliminate or reduce hidden nodes by using more powerful antennas on remote devices or simply ensuring you are a on different channel than all your neighbors.

Just keep in mind, only 3 channels count in the US. If you neighbor is on 6, moving to channel 5 is STILL overlapping. In fact, a neighbor on 5 kills both channel 1 and 6 leaving you only with 11 being non-overlapping.
If you want to be that "Richard" of a neighbor, go ahead and use channel 3 and 9 and then you collide with every single channel choking everyone. Just keep in mind, you hurt yourself just as much as them.

Ryan Carlyle

unread,
May 3, 2014, 12:47:04 PM5/3/14
to make...@googlegroups.com
Moronic neighbors who park on channel 3 or 8 or whatever are one of the worst parts of living in an apartment or condo. Screwing up everybody's internet. Not only does their noise interfere with your broadcasts, they're not on the same channel so traffic isn't coordinated properly. You're better off having everyone on channel 6 than having people split between 5, 6, and 7. Going to separate channels only helps if they're split between 1, 6, and 11.

My place is within line of sight of downtown Houston. (Nice skyline view, it's great.) But I can see the guest wifi from a half dozen different office buildings. And there's a ton of hidden SSID networks that suck up air time too. I did a scan with a high-gain antenna a while back and got over 150 separate wifi SSIDs spread across every channel. It's EM noise hell. As a consequence, the nicest wifi equipment on the market is still slow and unreliable. I have basically given up on wireless for my computers and go powerline Ethernet or 4g cellular data for all my devices.

Wifi printer connectivity will not work for someone like me. Wireless data is useless when:
- You live in a high-noise environment
- The device needs 100% data integrity (in a timely fashion) to function
- The device has poor error handling

I'm fine with using the SD card on my R2x for now, but any future printer I buy/make will need a reliable way to transfer data over wires to onboard storage. Or a seriously rock-solid wireless upload function engineered by somebody who knows what the hell they're doing. (That rules out most, if not all, printer manufacturers today.)

Scott K

unread,
May 5, 2014, 10:47:24 AM5/5/14
to make...@googlegroups.com
My closest neighbor is a mile away, I ran a site survey and got no other wireless networks except my own, I ran on channel 11 of the 2.4ghz spectrum and even turned off my wireless for my 5Ghz spectrum on my main router (even though it wouldn't interfere).  

Nothing made the card work as expected.  From 45 second transfers of 3 megabyte files to sudden lockups, the FlashAir wasn't worth it.  I spent $15 and got another card reader module for my printer, I'll put that in if the contacts wear out.


We have an Eye-Fi card in my wife's Canon 5D and it transfers 25MB files across the room (30 feet) in 3-4 seconds to our iPad (in direct mode).  The technology exists to do this right, Toshiba has missed the boat on whatever hardware they chose to build into this card.

Ryan Carlyle

unread,
May 5, 2014, 12:29:30 PM5/5/14
to make...@googlegroups.com
Yeah, Eye-Fi cards work great. I don't know if it's easier for the SD-sized antenna to send than receive or something, but I sure wish the Eye-Fi was two-way.
Reply all
Reply to author
Forward
0 new messages