diff --git a/platformio.ini b/platformio.ini
index fbbdf84eea..cfb3511698 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -1,124 +1,184 @@
 #
-# Project Configuration File
+# Marlin Firmware
+# PlatformIO Configuration File
+#
+# For detailed documentation with EXAMPLES:
 #
-# A detailed documentation with the EXAMPLES is located here:
 # http://docs.platformio.org/en/latest/projectconf.html
 #
 
+# Automatic targets - enable auto-uploading
+# targets = upload
+
 #
 # By default platformio build will abort after 5 errors.
 # Remove '-fmax-errors=5' from build_flags below to see all.
 #
 
-# Automatic targets - enable auto-uploading
-# targets = upload
-
 [platformio]
 src_dir = Marlin
-envs_dir = .pioenvs
+build_dir = .pioenvs
 lib_dir = .piolib
 libdeps_dir = .piolibdeps
 env_default = megaatmega2560
 
 [common]
+default_src_filter = +<src/*> -<src/config>
+build_flags = -fmax-errors=5
+  -g
+  -ggdb
 lib_deps =
-  U8glib@1.19.1
+  https://github.com/MarlinFirmware/U8glib-HAL/archive/dev.zip
+  LiquidCrystal_I2C@1.1.2
   TMC2130Stepper
-  Adafruit NeoPixel
-  https://github.com/lincomatic/LiquidTWI2.git
-  https://github.com/trinamic/TMC26XStepper.git
-  https://github.com/ameyer/Arduino-L6470.git
-build_flags = -I $BUILDSRC_DIR -fmax-errors=5
+  https://github.com/teemuatlut/TMC2208Stepper/archive/v0.1.1.zip
+  Adafruit NeoPixel@1.1.3
+  https://github.com/lincomatic/LiquidTWI2/archive/30aa480.zip
+  https://github.com/ameyer/Arduino-L6470/archive/master.zip
+  https://github.com/trinamic/TMC26XStepper/archive/c1921b4.zip
+
+#################################
+#                               #
+#   Unique Core Architectures   #
+#                               #
+#  Add a new "env" below if no  #
+# entry has values suitable to  #
+#   build for a given board.    #
+#                               #
+#################################
 
 #
 # ATmega2560
 #
 [env:megaatmega2560]
-platform = atmelavr
-framework = arduino
-board = megaatmega2560
-build_flags = ${common.build_flags}
-board_f_cpu = 16000000L
-lib_deps = ${common.lib_deps}
+platform      = atmelavr
+framework     = arduino
+board         = megaatmega2560
+build_flags   = ${common.build_flags}
+board_f_cpu   = 16000000L
+lib_deps      = ${common.lib_deps}
+src_filter    = ${common.default_src_filter}
 monitor_speed = 250000
 
 #
 # ATmega1280
 #
 [env:megaatmega1280]
-platform = atmelavr
-framework = arduino
-board = megaatmega1280
-build_flags = ${common.build_flags}
-board_f_cpu = 16000000L
-lib_deps = ${common.lib_deps}
+platform      = atmelavr
+framework     = arduino
+board         = megaatmega1280
+build_flags   = ${common.build_flags}
+board_f_cpu   = 16000000L
+lib_deps      = ${common.lib_deps}
+src_filter    = ${common.default_src_filter}
+monitor_speed = 250000
 
+#
+# AT90USB1286 boards using CDC bootloader
+# - BRAINWAVE
+# - BRAINWAVE_PRO
+# - SAV_MKI
+# - TEENSYLU
+#
+[env:at90USB1286_CDC]
+platform      = teensy
+framework     = arduino
+board         = at90USB1286
+build_flags   = ${common.build_flags}
+lib_deps      = ${common.lib_deps}
+lib_ldf_mode  = deep+
+src_filter    = ${common.default_src_filter}
+extra_scripts = pre:buildroot/share/atom/create_custom_upload_command_CDC.py
+
+#
+# AT90USB1286 boards using DFU bootloader
+# - PrintrBoard
+# - PrintrBoard Rev.F
+# - ? 5DPRINT ?
+#
+[env:at90USB1286_DFU]
+platform      = teensy
+framework     = arduino
+board         = at90USB1286
+build_flags   = ${common.build_flags}
+lib_deps      = ${common.lib_deps}
+lib_ldf_mode  = deep+
+src_filter    = ${common.default_src_filter}
+extra_scripts = pre:buildroot/share/atom/create_custom_upload_command_DFU.py
 
 #
 # Melzi and clones (ATmega1284p)
 #
 [env:melzi]
-platform = atmelavr
-framework = arduino
-board = sanguino_atmega1284p
-build_flags = ${common.build_flags}
-upload_speed = 57600
-lib_deps = ${common.lib_deps}
+platform      = atmelavr
+framework     = arduino
+board         = sanguino_atmega1284p
+build_flags   = ${common.build_flags}
+upload_speed  = 57600
+lib_deps      = ${common.lib_deps}
+src_filter    = ${common.default_src_filter}
+monitor_speed = 250000
 
 #
-# Melzi and clones (ATmega1284p)
-# with Optiboot bootloader
+# Melzi and clones (Optiboot bootloader)
 #
 [env:melzi_optiboot]
-platform = atmelavr
-framework = arduino
-board = sanguino_atmega1284p
-build_flags = ${common.build_flags}
-upload_speed = 115200
-lib_deps = ${common.lib_deps}
+platform      = atmelavr
+framework     = arduino
+board         = sanguino_atmega1284p
+build_flags   = ${common.build_flags}
+upload_speed  = 115200
+lib_deps      = ${common.lib_deps}
+src_filter    = ${common.default_src_filter}
+monitor_speed = 250000
 
 #
 # RAMBo
 #
 [env:rambo]
-platform = atmelavr
-framework = arduino
-board = reprap_rambo
-build_flags = ${common.build_flags}
-board_f_cpu = 16000000L
-lib_deps = ${common.lib_deps}
+platform      = atmelavr
+framework     = arduino
+board         = reprap_rambo
+build_flags   = ${common.build_flags}
+board_f_cpu   = 16000000L
+lib_deps      = ${common.lib_deps}
+src_filter    = ${common.default_src_filter}
+monitor_speed = 250000
 
 #
 # Sanguinololu (ATmega644p)
 #
 [env:sanguino_atmega644p]
-platform = atmelavr
-framework = arduino
-board = sanguino_atmega644p
-build_flags = ${common.build_flags}
-lib_deps = ${common.lib_deps}
+platform      = atmelavr
+framework     = arduino
+board         = sanguino_atmega644p
+build_flags   = ${common.build_flags}
+lib_deps      = ${common.lib_deps}
+src_filter    = ${common.default_src_filter}
+monitor_speed = 250000
 
 #
 # Sanguinololu (ATmega1284p)
 #
 [env:sanguino_atmega1284p]
-platform    = atmelavr
-framework   = arduino
-board       = sanguino_atmega1284p
-build_flags = ${common.build_flags}
-lib_deps = ${common.lib_deps}
-
+platform      = atmelavr
+framework     = arduino
+board         = sanguino_atmega1284p
+build_flags   = ${common.build_flags}
+lib_deps      = ${common.lib_deps}
+src_filter    = ${common.default_src_filter}
+monitor_speed = 250000
 
 #
 # Teensy++ 2.0
 #
-# - PrintrBoard
-# - PrintrBoard Rev.F
-# - Brainwave Pro
-#
 [env:teensy20]
-platform = teensy
-framework = arduino
-board = teensy20pp
-build_flags = ${common.build_flags}
-lib_deps = ${common.lib_deps}
+platform      = teensy
+framework     = arduino
+board         = teensy20pp
+build_flags   = ${common.build_flags}
+#board_f_cpu  = 20000000L     ; Bug in Arduino framework disallows boards running at 20Mhz
+lib_deps      = ${common.lib_deps}
+lib_ldf_mode  = deep+
+src_filter    = ${common.default_src_filter}
+monitor_speed = 250000