Introduction: 3D Printing Over SD Card Wi-Fi Hack

About: Programmer, Inventor, Rapid Prototype, and a Student

Are you tired of having to print over USB or having to remove the SD Card constantly to load your files?, then this tutorial is the one for you. I will be showing a small hack to make your 3D Printer Wi-Fi ready.

What I mean with this is loading your files from your Computer to the SD Card over Wi-Fi and only interfacing with the on-board screen to start your print

This hack will work with any Marlin-Firmware based 3D Printer and I will assume that you have done any Arduino work before and/or any sort of programming.

My Reasons:

The need for this hack is based on the high traffic of users that comes to the Invention Studio, the largest student run makerspace in the US, (over 100+ users weekly). Our goal is to create a user-friendly 3D Printer area for users to come and start their prints within minutes. The current line of printers at the Invention Studio are a combinations of Ultimaker 2+, Afinia H480, and UP Mini 2. Despite the Afinias and Up Minis having the friendliest interface, we are looking to replace them and standardize our line with more Ultimaker 2+ because of their reliability, quality, and volume size.

The needs for our 3D Printer space is been able to "connect" 5-6 printers per computer (We tried USB printing and it is not reliable specially when you have multiple printers), interact less physically with the SD Card (mostly to prevent the lost or damage of the SD Card and its port slots), establish easy steps and processes to teach users and future volunteers how to be 3D Printing savvy.

Step 1: Ingredients

Now that we know this is what we want. This is the list of things you need to accomplish this tutorial.

  1. Toshiba FlashAir W-03 8GB/16GB/32GB -> This will be the Wi-Fi module/memory card that we will be going to use to interface between our computer and our printer.
  2. Marlin Firmware (specific to your 3D printer) -> we need to make slight adjustments I will explain why later on.
    • Since I am using the Ultimaker 2+ I found the firmware on the Ultimaker Github I used this version because it is the one that my printers accept. This will be a little different for each one of you (mostly because of the settings).
    • If you do not have a copy of your firmware, contact your 3D Printer company and see if they can send you a copy of the firmware.
  3. Text Editor (preferably Sublime Text since it color codes your code and it numbers each line) however any text editor will do, except notepad. Notepad is bad!
  4. Arduino IDE -> this will be used to upload the modified Marlin Firmware.

If you have any questions so far, do not hesitate to contact me via the comments. I will answer to the best of my ability any questions related to this instructable.

Step 2: Modifying Your Marlin Firmware

  • Grab your Marlin and make a copy of it (This way we have a backup that we can revert in case something goes wrong).
  • Now let's open the Marlin folder that we will modify. You shall see over 50+ files (in my case I have 79 files exactly)
  • With Sublime Text or your preferred text editor open the following files:
    • Configuration.h
    • Sd2Card.cpp

Configuration.h

  • Add the following line below BAUDRATE. Refer to the picture for reference.
//SomeCode above ignore that
#define BAUDRATE ######## //Some number will appear do not change those numbers
#define FLASH_AIR_WIFI // <-- You will add this line of code, picture above for reference
//SomeCode below ignore that too

Sd2Card.cpp

  • Add the following line under readData() function and under chipSelectHigh() method call. Refer to the picture for reference.
bool Sd2Card::readData(uint8_t* dst, uint16_t count) {
//SOME CODE HERE look at the picture to see what the code looks like more or less
chipSelectHigh();
//add following 3 lines
#ifdef FLASH_AIR_WIFI
    spiSend(0xFF);
#endif
return true;
fail:
  chipSelectHigh();
//add following 3 lines
#ifdef FLASH_AIR_WIFI
    spiSend(0xFF);
#endif
  return false;
}
  • Save both files and you are done manipulating the firmware.

What did we just do?

My understanding of the topic is that when you attempt to insert your Toshiba Flashair to a 3D Printer, the printer will recognize it as a memory card, however it will not turn on the Wi-Fi module built-in on the card. In order to activate back on the Wi-Fi module of the card, you need to write to the SD Card. The modification that we just made sends one byte to the SD Card which causes to activate the built-in Wi-Fi module.

Step 3: Uploading Marlin-Firmware to Your 3D Printer

If you already know how to upload your firmware, then please feel free to do that and skip this step.

.

.

.

You are still here? No problem, I got you cover!

  • Make sure everything is saved.
  • Open the file Marlin.ino (this will open the Arduino IDE software)
  • Verify and upload your code (make sure your printer is on and connected via USB)
    • If you are getting some sort of errors, then make sure you are using the Arduino Mega 2560 board and you are in the right COM port.
Tools->Boards->Arduino/Genuino Mega or Mega 2560
Tools->Port->COM

if you did everything correctly it should not give you any errors once uploaded verify that your printers turns back on.

**Similarly to revert our changes go to your backed up copy of Marlin, open the Marlin.ino and upload it.**

Step 4: Toshiba Flashair Configuration

Now that we have flashed the firmware we can now proceed to configure our Toshiba Flashair SD Card.

  • Plug your SD Card to your computer and make a copy of the three folders (some of these folders are hidden). This will be your backup in case something goes wrong.
  • Open SD_WLAN->CONFIG with Sublime Text or your favorite text editor and add the following modifications.

Original File

Note that you might have different numbers. Keep the values of YOUR file

[Vendor]
CIPATH=/DCIM/100__TSB/FA000001.JPG
APPMODE=0
APPNETWORKKEY=********
VERSION=FA9CAW3AW3.00.01
CID=02544d535731364740d2f6b179010b01
PRODUCT=FlashAir
VENDOR=TOSHIBA

Modified File

Change the values like the ones provided. Again keeping your values

[Vendor]
CIPATH=/DCIM/100__TSB/FA000001.JPG
APPMODE=4
APPNETWORKKEY=pickAPassword
VERSION=DO NOT CHANGE, YOU MIGHT HAVE DIFFERENT VALUE
CID=DO NOT CHANGE, YOU MIGHT HAVE DIFFERENT VALUE
PRODUCT=DO NOT CHANGE
VENDOR=DO NOT CHANGE
APPSSID=pickANameHere
LOCK=1
WEBDAV=2
TIMEZONE=-16
DNSMODE=1
APPAUTOTIME=0
UPLOAD=1

With this modification make sure to save it and make sure the files are inside the SD card. Overwrite the card if you must, but make sure the modified CONFIG file is in the SD_WLAN folder.

Step 5: Creating a Virtual Drive

Make sure your SD Card is on your printer and at this point you should be broadcasting a new connection name after whatever you have chosen. I chose to name mine Baymax.

  • Connect to the new network and find the IP address
    • In Windows, open either powershell or command prompt and type the command ipconfig to get the IP address. Write down your "default getaway" address.
  • Open This PC folder and click on "Add a network location"->"choose a custom network location" and type in http://YouDefaultGetway press next and your SD Card should appear as a "virtual" folder.
  • Create a shortcut on your Desktop or wherever and rename it after your printer's name

Step 6: Celebrate!

Now you can enjoy saving your gcode into this drive and you can view your gcode files in your printer's newly Wi-Fi SD Card.

Enjoy, Favorite, and Subscribe for more. If you have more questions let me know I will gladly answer your questions to the best of my abilities related to this project! Happy Printing Guys!