Adding WiFi to your bot with Toshiba FlashAir SD Card

8539 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 repl