summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/1-setup-path-win.bat66
-rw-r--r--util/2-setup-environment-win.bat72
-rw-r--r--util/ELEVATE_LICENSE.md25
-rw-r--r--util/Win_Check.bat208
-rw-r--r--util/activate_wsl.sh17
-rw-r--r--util/add-paths.bat30
-rw-r--r--util/bootloader_at90usb128x_1_0_1.hex282
-rw-r--r--util/bootloader_atmega16u4_1_0_1.hex258
-rwxr-xr-xutil/bootloader_atmega32u4_1_0_0.hex253
-rw-r--r--util/drivers.txt46
-rw-r--r--util/elevate.exebin0 -> 79360 bytes
-rwxr-xr-xutil/install_dependencies.sh114
-rwxr-xr-xutil/new_project.sh32
-rw-r--r--util/travis_build.sh33
-rw-r--r--util/travis_compiled_push.sh70
-rw-r--r--util/wsl_install.sh159
16 files changed, 1665 insertions, 0 deletions
diff --git a/util/1-setup-path-win.bat b/util/1-setup-path-win.bat
new file mode 100644
index 0000000000..699aee2152
--- /dev/null
+++ b/util/1-setup-path-win.bat
@@ -0,0 +1,66 @@
+@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@ECHO OFF
+SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe
+
+DEL script1.log > NUL 2>&1
+DEL add-paths.log > NUL 2>&1
+DEL add-paths-detail.log > NUL 2>&1
+DEL UPDATE > NUL 2>&1
+
+ELEVATE -wait add-paths.bat >> script1.log 2>&1
+
+IF ERRORLEVEL 1 (
+ ECHO You denied admin access. Rerun the script, and be sure to press the yes button this time.
+) ELSE (
+ TYPE add-paths.log 2> NUL
+)
+ECHO.
+
+:: Branch to UpdateEnv if we need to update
+IF EXIST UPDATE (
+ DEL UPDATE
+ GOTO UpdateEnv
+)
+
+GOTO ExitBatch
+
+:: -----------------------------------------------------------------------------
+
+:UpdateEnv
+ECHO Making updated PATH go live . . .
+REG delete HKCU\Environment /F /V TEMPVAR > NUL 2>&1
+setx TEMPVAR 1 > NUL
+REG delete HKCU\Environment /F /V TEMPVAR > NUL 2>&1
+IF NOT !cmdcmdline! == !CMDLINERUNSTR! (CALL :KillExplorer)
+GOTO ExitBatch
+
+:: -----------------------------------------------------------------------------
+
+:ExitBatch
+ENDLOCAL
+PAUSE
+EXIT /b
+
+:: -----------------------------------------------------------------------------
+
+:KillExplorer
+ECHO.
+ECHO.
+ECHO Your desktop will be restarted.
+ECHO.
+ECHO All file explorer windows except for the one you launched this script from WILL BE CLOSED.
+ECHO.
+ECHO Press enter when ready, or close this window if you would rather do a full restart of your computer at a later time.
+ECHO.
+PAUSE
+ping -n 5 127.0.0.1 > NUL 2>&1
+ECHO Killing process Explorer.exe. . .
+ECHO.
+taskkill /f /im explorer.exe > NUL
+ECHO.
+ECHO Your desktop is now loading. . .
+ECHO.
+ping -n 5 127.0.0.1 > NUL 2>&1
+START explorer.exe
+START explorer.exe %CD%
+EXIT /b \ No newline at end of file
diff --git a/util/2-setup-environment-win.bat b/util/2-setup-environment-win.bat
new file mode 100644
index 0000000000..3e54cc776c
--- /dev/null
+++ b/util/2-setup-environment-win.bat
@@ -0,0 +1,72 @@
+@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@ECHO OFF
+
+CD %~dp0
+
+SET STARTINGDIR=%CD%
+echo %STARTINGDIR%
+
+:: Check for admin privilages
+SETX /M test test > nul 2>&1
+IF NOT ["%ERRORLEVEL%"]==["0"] (
+ ELEVATE -wait 2-setup-environment-win.bat & goto :EOF
+)
+
+DEL %STARTINGDIR%\environment-setup.log
+
+:: Make sure path to MinGW exists - if so, CD to it
+SET MINGWPATH="C:\MinGW\bin"
+IF NOT EXIST !MINGWPATH! (ECHO Path not found: %MINGWPATH%. Did you install MinGW to the default location? && GOTO ExitBatch)
+CD /D %MINGWPATH%
+
+ECHO.
+ECHO ------------------------------------------
+ECHO Installing wget and unzip
+ECHO ------------------------------------------
+ECHO.
+mingw-get install msys-wget-bin msys-unzip-bin
+
+MKDIR temp
+CD temp
+
+ECHO.
+ECHO ------------------------------------------
+ECHO Installing dfu-programmer.
+ECHO ------------------------------------------
+ECHO.
+wget 'http://downloads.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip' >> %STARTINGDIR%\environment-setup.log
+unzip -o dfu-programmer-win-0.7.2.zip >> %STARTINGDIR%\environment-setup.log
+COPY dfu-programmer.exe .. >> %STARTINGDIR%\environment-setup.log
+
+ECHO ------------------------------------------
+ECHO Downloading driver
+ECHO ------------------------------------------
+wget http://downloads.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip >> %STARTINGDIR%\environment-setup.log
+unzip -o libusb-win32-bin-1.2.6.0.zip >> %STARTINGDIR%\environment-setup.log
+COPY libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll >> %STARTINGDIR%\environment-setup.log
+
+ECHO.
+ECHO ------------------------------------------
+ECHO Installing driver. Accept prompt.
+ECHO ------------------------------------------
+ECHO.
+IF EXIST "%WinDir%\System32\PnPUtil.exe" (%WinDir%\System32\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)
+IF EXIST "%WinDir%\Sysnative\PnPUtil.exe" (%WinDir%\Sysnative\PnPUtil.exe -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf && GOTO PNPUTILFOUND)
+
+ECHO FAILED. Could not find PnPUtil.exe in "%WinDir%\System32" or "%WinDir%\Sysnative".
+
+:PNPUTILFOUND
+
+:: Wait then delete directory
+ping -n 5 127.0.0.1 > NUL 2>&1
+CD ..
+RD /s /q temp
+
+ECHO ------------------------------------------
+ECHO Finished!
+
+:ExitBatch
+CD /D %STARTINGDIR%
+ENDLOCAL
+PAUSE
+EXIT /b \ No newline at end of file
diff --git a/util/ELEVATE_LICENSE.md b/util/ELEVATE_LICENSE.md
new file mode 100644
index 0000000000..1cf4fda917
--- /dev/null
+++ b/util/ELEVATE_LICENSE.md
@@ -0,0 +1,25 @@
+Elevate was downloaded from [here](https://jpassing.com/2007/12/08/launch-elevated-processes-from-the-command-line/).
+
+### LICENSE
+
+The MIT License (MIT)
+
+Copyright (c) <year> <copyright holders>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE. \ No newline at end of file
diff --git a/util/Win_Check.bat b/util/Win_Check.bat
new file mode 100644
index 0000000000..3fdb656f9c
--- /dev/null
+++ b/util/Win_Check.bat
@@ -0,0 +1,208 @@
+@setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@echo OFF
+set BAT_VERSION=v1.0
+set REPORT_NAME=Win_Check_Output.txt
+
+:: -----------------------------------------------------------------------------
+
+cls
+
+echo QMK Windows Check Output %BAT_VERSION%
+echo QMK Windows Check Output %BAT_VERSION%.>%REPORT_NAME%
+
+:: -----------------------------------------------------------------------------
+
+set MINGW_BASE_DIR=C:\MinGW
+
+set KEYMAP=atomic-pvc
+set KEYMAP_CLEAN=atomic-pvc-clean
+
+:: -----------------------------------------------------------------------------
+
+if /I "%1" EQU VERBOSE (goto :Verbose_Make) else (goto :Normal_Make)
+
+:Normal_Make
+set MAKE_CMD_LEVEL_0=make -r -f Makefile COLOR=FALSE
+set MAKE_CMD_LEVEL_1=make -r -f ../Makefile COLOR=FALSE
+set MAKE_CMD_LEVEL_2=make -r -f ../../Makefile COLOR=FALSE
+goto :Start_Report
+
+:Verbose_Make
+echo Verbose Mode
+set MAKE_CMD_LEVEL_0=make -r -d -f Makefile COLOR=FALSE VERBOSE=TRUE
+set MAKE_CMD_LEVEL_1=make -r -d -f ../Makefile COLOR=FALSE VERBOSE=TRUE
+set MAKE_CMD_LEVEL_2=make -r -d -f ../../Makefile COLOR=FALSE VERBOSE=TRUE
+goto :Start_Report
+
+:Start_Report
+
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=CURRENT DIRECTORY & call :ReportHeader
+
+echo %CD%>>%REPORT_NAME% 2>&1
+
+echo.>>%REPORT_NAME% 2>&1
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=CURRENT PATHS & call :ReportHeader
+
+for %%A in ("%path:;=";"%") do (echo %%~A>>%REPORT_NAME% 2>&1)
+
+echo.>>%REPORT_NAME% 2>&1
+
+:: -----------------------------------------------------------------------------
+
+rem set HEADER=CURRENT ENVIRONMENTAL SETTINGS & call :ReportHeader
+
+rem set>>%REPORT_NAME% 2>&1
+rem echo.>>%REPORT_NAME% 2>&1
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=KEY EXECUTABLE LOCATIONS - GENERAL & call :ReportHeader
+
+set FILENAME=make.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU Make" & call :ReportVersion
+set FILENAME=git.exe & set VERSION_CMD=--version & set VERSION_FIND="git" & call :ReportVersion
+set FILENAME=cmp.exe & set VERSION_CMD=--version & set VERSION_FIND="cmp" & call :ReportVersion
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=EXECUTABLE LOCATIONS - AVR MCU COMPILERS & call :ReportHeader
+
+set FILENAME=avr-gcc.exe & set VERSION_CMD=--version & set VERSION_FIND="avr" & call :ReportVersion
+set FILENAME=avr-objcopy.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objcopy" & call :ReportVersion
+set FILENAME=avr-objdump.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objdump" & call :ReportVersion
+set FILENAME=avr-size.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU size" & call :ReportVersion
+set FILENAME=avr-ar.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU ar" & call :ReportVersion
+set FILENAME=avr-nm.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU nm" & call :ReportVersion
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=EXECUTABLE LOCATIONS - ARM MCU COMPILERS & call :ReportHeader
+
+set FILENAME=arm-none-eabi-gcc.exe & set VERSION_CMD=--version & set VERSION_FIND="arm-none-eabi-gcc" & call :ReportVersion
+set FILENAME=arm-none-eabi-objcopy.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objcopy" & call :ReportVersion
+set FILENAME=arm-none-eabi-objdump.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objdump" & call :ReportVersion
+set FILENAME=arm-none-eabi-size.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU size" & call :ReportVersion
+set FILENAME=arm-none-eabi-ar.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU ar" & call :ReportVersion
+set FILENAME=arm-none-eabi-nm.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU nm" & call :ReportVersion
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=EXECUTABLE LOCATIONS - NATIVE COMPILERS & call :ReportHeader
+
+set FILENAME=gcc.exe & set VERSION_CMD=--version & set VERSION_FIND="gcc" & call :ReportVersion
+set FILENAME=objcopy.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objcopy" & call :ReportVersion
+set FILENAME=objdump.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU objdump" & call :ReportVersion
+set FILENAME=size.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU size" & call :ReportVersion
+set FILENAME=ar.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU ar" & call :ReportVersion
+set FILENAME=nm.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU nm" & call :ReportVersion
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=EXECUTABLE LOCATIONS - PROGRAMMERS & call :ReportHeader
+
+set FILENAME=dfu-programmer.exe & set VERSION_CMD=--version & set VERSION_FIND="dfu" & call :ReportVersion
+set FILENAME=batchisp.exe & set VERSION_CMD=-version & set VERSION_FIND="batchisp" & call :ReportVersion
+set FILENAME=dfu-util.exe & call :Report
+set FILENAME=teensy_loader_cli.exe & call :Report
+set FILENAME=hid_bootloader_cli.exe & call :Report
+set FILENAME=avrdude.exe & call :Report
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=EXECUTABLE LOCATIONS - OPTIONAL & call :ReportHeader
+set FILENAME=cppcheck.exe & call :Report
+set FILENAME=doxygen.exe & call :Report
+set FILENAME=gdb-config.exe & call :Report
+set FILENAME=wget.exe & call :Report
+set FILENAME=unzip.exe & call :Report
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=MINGW CHECK - OPTIONAL & call :ReportHeader
+if exist %MINGW_BASE_DIR% (echo Expected MinGW Base Dir = %MINGW_BASE_DIR%>>%REPORT_NAME% 2>&1) else (echo Expected MinGW Base Dir = %MINGW_BASE_DIR% - Not Found>>%REPORT_NAME% 2>&1)
+echo.>>%REPORT_NAME% 2>&1
+set FILENAME=mingw32-make.exe & set VERSION_CMD=--version & set VERSION_FIND="GNU Make" & call :ReportVersion
+if exist %MINGW_BASE_DIR%\bin\make.exe (ECHO It is not recommended to have make.exe in mingw/bin.>>%REPORT_NAME% 2>&1 & echo.>>%REPORT_NAME% 2>&1)
+
+:: -----------------------------------------------------------------------------
+
+set HEADER=MAKE CHECK & call :ReportHeader
+if exist Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_0% & goto MakeFound)
+if exist ..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_1% & goto MakeFound)
+if exist ..\..\Makefile (set MAKE_CMD=%MAKE_CMD_LEVEL_2% & goto MakeFound)
+
+echo No Makfile Found.>>%REPORT_NAME% 2>&1
+echo.>>%REPORT_NAME% 2>&1
+echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1
+
+goto :ContinueAfterMake
+
+:MakeFound
+call :RunMake
+
+:ContinueAfterMake
+goto :ExitBatch
+
+:ExitBatch
+ echo Done!
+ echo.
+ rem type %REPORT_NAME%
+ echo.
+ echo See %REPORT_NAME% for the report.
+ endlocal
+exit /b
+
+:: -----------------------------------------------------------------------------
+
+:RunMake
+
+ echo Makfile Found.>>%REPORT_NAME% 2>&1
+ echo.>>%REPORT_NAME% 2>&1
+ set HEADER=MAKE CLEAN & call :ReportHeader
+ echo Make Command = %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1
+ echo.>>%REPORT_NAME% 2>&1
+ %MAKE_CMD% %KEYMAP_CLEAN%>>%REPORT_NAME% 2>&1
+ set HEADER=MAKE & call :ReportHeader
+ echo Make Command = %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1
+ echo.>>%REPORT_NAME% 2>&1
+ %MAKE_CMD% %KEYMAP%>>%REPORT_NAME% 2>&1
+ echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1
+ echo.>>%REPORT_NAME% 2>&1
+exit /b
+
+:ReportHeader
+ echo ------------------------------------------------------------------------->>%REPORT_NAME% 2>&1
+ echo.>>%REPORT_NAME% 2>&1
+ echo %HEADER%>>%REPORT_NAME% 2>&1
+ echo.>>%REPORT_NAME% 2>&1
+exit /b
+
+:Report
+ echo Filename = %FILENAME% >>%REPORT_NAME% 2>&1
+ <nul set /p output="Location = " >>%REPORT_NAME% 2>&1
+ where %FILENAME% >>%REPORT_NAME% 2> NUL
+ if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReport)
+
+ :EndReport
+ echo.>>%REPORT_NAME% 2>&1
+ <nul set /p output="."
+exit /b
+
+:ReportVersion
+ echo Filename = %FILENAME% >>%REPORT_NAME% 2>&1
+ <nul set /p output="Location = " >>%REPORT_NAME% 2>&1
+ where %FILENAME% >>%REPORT_NAME% 2> NUL
+ if ERRORLEVEL 1 (echo Not Found >>%REPORT_NAME% 2>&1 & goto :EndReportVersion)
+ <nul set /p output ="Version = " >>%REPORT_NAME% 2>&1
+
+ (%FILENAME% %VERSION_CMD% | find %VERSION_FIND%) >>%REPORT_NAME% 2>&1
+
+ :EndReportVersion
+ echo.>>%REPORT_NAME% 2>&1
+ <nul set /p output="."
+exit /b \ No newline at end of file
diff --git a/util/activate_wsl.sh b/util/activate_wsl.sh
new file mode 100644
index 0000000000..e2312b56d4
--- /dev/null
+++ b/util/activate_wsl.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+function export_variables {
+ local util_dir=~/qmk_utils
+ local download_dir=$util_dir/wsl_downloaded
+
+ export DFU_PROGRAMMER=$download_dir/dfu-programmer/dfu-programmer.exe
+ export DFU_UTIL=$download_dir/dfu-util-0.9-win64/dfu-util.exe
+ export TEENSY_LOADER_CLI=$download_dir/teensy_loader_cli.exe
+ export BATCHISP=batchisp.exe
+}
+
+export_variables
+
+
+
+
diff --git a/util/add-paths.bat b/util/add-paths.bat
new file mode 100644
index 0000000000..ab3d91da17
--- /dev/null
+++ b/util/add-paths.bat
@@ -0,0 +1,30 @@
+@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@ECHO off
+
+SET NEWPATH1="C:\MinGW\msys\1.0\bin"
+SET NEWPATH2="C:\MinGW\bin"
+
+CD %~dp0
+
+ECHO. > add-paths.log
+
+CALL :AddPath %NEWPATH1%
+CALL :AddPath %NEWPATH2%
+
+EXIT /b
+
+:AddPath <pathToAdd>
+ECHO %PATH% | FINDSTR /C:"%~1" > nul
+IF ERRORLEVEL 1 (
+ REG add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v PATH /t REG_SZ /d "%PATH%;%~1" >> add-paths-detail.log
+ IF ERRORLEVEL 0 (
+ ECHO Adding %1 . . . Success! >> add-paths.log
+ SET "PATH=%PATH%;%~1"
+ COPY NUL UPDATE
+ ) ELSE (
+ ECHO Adding %1 . . . FAILED. Run this script with administrator privileges. >> add-paths.log
+ )
+) ELSE (
+ ECHO Skipping %1 - Already in PATH >> add-paths.log
+ )
+EXIT /b \ No newline at end of file
diff --git a/util/bootloader_at90usb128x_1_0_1.hex b/util/bootloader_at90usb128x_1_0_1.hex
new file mode 100644
index 0000000000..90491a82a6
--- /dev/null
+++ b/util/bootloader_at90usb128x_1_0_1.hex
@@ -0,0 +1,282 @@
+:020000021000EC
+:04E000000C94B3F6D3
+:04E028000C94BBF5A4
+:10E08C0000007CF608006BF66EF670F672F674F60D
+:0DE09C0076F678F67AF6A701000100000084
+:10E0AA0012BD01BDF89A00B5089501E00895F999E5
+:10E0BA00FECF12BD01BD20BDFA9AF99AF6CFF999A1
+:10E0CA00FECF0C9455F0F8012BBF069108952297C4
+:10E0DA00F8012BBF46914983319606910883142F84
+:10E0EA0022960895A89507EF04BFE0E6F0E00081C4
+:10E0FA0008610083F08301810093000100E8018335
+:10E10A00F1830C9488F00E9452F50E9488F5FDCFA5
+:10E11A000E944FF723977CD171D1088301E0402EEA
+:10E12A0001E0502E6BD1F2016CD100E0F2010587BB
+:10E13A0000851185012B49F460D1FBD003850023AA
+:10E14A0009F4EAC000E00387E7C00091E80002FF93
+:10E15A00FCCF54D10287A1E1B1E050D10C934ED14A
+:10E16A00FD0101834BD1028349D1038347D1048343
+:10E17A00F20102850A9561F0025049F10A9509F403
+:10E18A005DC00A9509F4A1C00A9509F4BBC0C2C0D2
+:10E19A000C91013011F401E001C000E00787FD0194
+:10E1AA000181C7D00583FD010281C3D00483FD012B
+:10E1BA000381BFD00783FD010481BBD027D2B9D028
+:10E1CA0006850C3F11F433D1A6C0A3D1A4C0FD012A
+:10E1DA000181F2010583FD010281F2010483FD013F
+:10E1EA000381F2010783FD010481F2010FD20C9130
+:10E1FA00002329F00A9539F00A95F1F08CC000E065
+:10E20A0098D0078788C0F20186819781A0E0B0E0A4
+:10E21A0064D1A040B0408F5F9F4FAF4FBF4F04C043
+:10E22A00F20162D109F477C05CD14CD10F3FC1F33E
+:10E23A0005E07FD005876FC001E0E2CF0C91002393
+:10E24A0029F00250C9F30A9541F065C0E0D10E9455
+:10E25A0090F80FEF6ED006875EC0FD0101810023A2
+:10E26A0019F00A9589F057C05FD00DEF04BF6BD043
+:10E27A0049D103FFFDCF60D009B50D7F09BD50D04C
+:10E28A0008E000936000FFCF4FD05DD03BD103FF81
+:10E29A00FDCF52D045D009B50D7F09BD0FEF1FE064
+:10E2AA0004C009811A810150104009831A83098127
+:10E2BA001A81012BB1F700E8009361000091000177
+:10E2CA00009361000C940000FFCFFD0111810C91B5
+:10E2DA00002319F00A9541F01EC01350E0F497D1BB
+:10E2EA0002E027D0048717C0105339F01A9541F07D
+:10E2FA001F52A9F31A9599F30EC002E00883EFCFD3
+:10E30A0001E0FCCFFD01228130E013D0308331835C
+:10E31A00228333837CD171D02396E6E00C9460F794
+:10E32A00E8ED00810F7681C001E005BF00E005BF7E
+:10E33A000895E1E0F1E0089576D05FD0F894E0EE38
+:10E34A00E2D0016072C063D158C0BA93AA9356D082
+:10E35A000A935ED0A1E0B1E051D0FD0152D0E1E1D3
+:10E36A00F1E01A960C911A97035019F00250C9F06D
+:10E37A000CC00081002321F00A9569F00A9529F45E
+:10E38A00FD0106850C3F29F452D02196A991B99135
+:10E39A0008955ED0FACFFD0105810093F100048152
+:10E3AA0011C011810081002319F00A9581F0EDCF87
+:10E3BA00112329F01A9529F01A9519F005C001E0E0
+:10E3CA0001C000E00093F10018D03ED0DECF105318
+:10E3DA0039F01A9539F01F5261F01A9561F0F4CFAD
+:10E3EA0008E5F0CF00E010E020E030E00E94D6F728
+:10E3FA00E9CF02E0F8CF04E0F6CF21C00091F100A6
+:10E40A00089500870091F1000187E8EEF0E00BC063
+:10E41A0001D000D00091F10008830895EBEE73D08B
+:10E42A0000620083E8EE0081077F00830895F6DF2B
+:10E43A00E1E0F1E002E0048703E00587089566D091
+:10E44A00008100FFFDCF08955DD002FFFDCFE1C03E
+:10E45A000E944DF701E0602E01E0702EF3018681E3
+:10E46A0097813BD00196A0E0B0E007C02BD0009383
+:10E47A00F100F30139D051F449D03FD099F042D09C
+:10E48A0002FD10C0008100FFFDCF4424042D4394F7
+:10E49A00003291F3F3010785002323D039F30E9458
+:10E4AA0064F0E5CF2FD000FFFDCF00810E7F0083FF
+:10E4BA00008100FFFDCF008102FFFDCFAAD0E8E076
+:10E4CA000C945EF720E04081518162817381400F94
+:10E4DA00511F261F8A010C9468F003D0801B910BF0
+:10E4EA000895048115810895FCDF0F5F1F4F04838F
+:10E4FA00158381509040A040B040082F092B0A2B69
+:10E50A000B2B0895E8EEF0E000810895FBDF0E7F03
+:10E51A008CCF0E9449F7A1E0B1E0FD01448055800B
+:10E52A0066247724A480B5800FE1A0220085118596
+:10E53A00005210400087118715C0FD01078500238E
+:10E54A0089F49C01090120E04D915D916D917C91C6
+:10E55A001397480D591D621F721F900105E911E0BA
+:10E56A000E9402F849D0C8F180E090E0420113C04D
+:10E57A0045DFFC01EB56FE4F0083019601E0400E99
+:10E58A0000E0501E601E701E0091F200002311F080
+:10E59A0033D0C0F43CD030D080F2FC01B096E230E7
+:10E5AA00F14058F60091E80002FFFCCF0091F2001A
+:10E5BA00FD0120853185201B304020873187E4CF3B
+:10E5CA001DDFAA94AA20E1F70785013089F6209178
+:10E5DA00F10082010E945CF0D1CF00851185012BE8
+:10E5EA0021F090DF02FFFDCF14D090DF008100FF01
+:10E5FA00FDCFECE00C945AF7FD010681178120E06B
+:10E60A0030E0041515052605370508950683E8EE5A
+:10E61A00F0E000810B7F008300810F7706CFEBEEDD
+:10E62A00F0E0208121602083018302810270012BA6
+:10E63A000283EDEE008102600083EEEE0081000F9E
+:10E64A0000E0001F089500E00895E8EDF0E0008181
+:10E65A000F7B0083E9ED008101FF0AC0F08BEBEE2E
+:10E66A00008100FD05C0F093E90010E302E0D7CF76
+:10E67A00EACF0F770132B9F5112379F11A9559F0DA
+:10E68A001A9561F01A9569F01A9509F11A95D1F05F
+:10E69A001A95E9F026C00E948DF022C00E94AAF1C4
+:10E6AA001FC026D000910E01018701E00187F18782
+:10E6BA00F18700910D010187F1870E9424F20E94DF
+:10E6CA0029F20EC015D000910D01018707C002E0A2
+:10E6DA0000930D0100E000930E010AD00E9424F27B
+:10E6EA0003C00E9413F202C001E0089500E00895F9
+:10E6FA00E8EEF0E00081077F008308950895035053
+:10E70A0021F5112339F01A9559F01A9599F01A95AD
+:10E71A00B9F01BC004E01BD00AEA11EF21E004C0E3
+:10E72A0015D004E711EF21E0E9E9F2E00083118353
+:10E73A002283DACF0EE10BD000E811EF21E0F4CF0B
+:10E74A0005D00EE911EF21E0EFCFD0CF0CE0009316
+:10E75A009D020895EEE9F2E031D101831091F100B2
+:10E76A00012F112359F10A9509F1025019F10250AA
+:10E77A00A9F00A9549F0025069F00A9599F00A95AC
+:10E78A0019F10A9529F12CC00181003809F461C0F8
+:10E79A000C943EF301810038D9F7CDC001810023E2
+:10E7AA00B9F725C00181002399F734C001810330EC
+:10E7BA0078F73CC10181033058F703C10181003861
+:10E7CA0038F3033828F7CDC00181013809F73CC076
+:10E7DA000181013059F41BD0008100FD07C0FCCF34
+:10E7EA0001810E943EF3002309F42ED0089510916E
+:10E7FA00E3001078E3D00F77012B0093E30007D0F2
+:10E80A00008100FFFDCFE3EE0081006820C0A0D0A8
+:10E81A0000811CC0BA93AA93D1D0023088F4E8EEE2
+:10E82A00F0E01081177F1083EEE9F2E00283A8EE90
+:10E83A00B0E00C910E7F0C9302810E9483F301C019
+:10E84A0003D0A991B9910895E8D001C00E7F008341
+:10E85A000895BA93AA932297A9E9B2E000E0FD01CC
+:10E86A0003831091F100AAD0202F2A9519F02A9536
+:10E87A00E1F021C002E1048300E511EF21E00D93EC
+:10E88A001D932C93129798D0088398D0098360D04F
+:10E89A00FD01048110E0288139810217130798F4D9
+:10E8AA000F7179F401E0038327C002E1048302E6D1
+:10E8BA0011EF21E0E4CF0E9484F3002321F7ADD0C9
+:10E8CA0033C0138319C0248317C0008100FFFDCF12
+:10E8DA0010E0012F1395003271F0ED91FD913C91FA
+:10E8EA003BBF0791FE93EE930093F100FD01048173
+:10E8FA000A95048371F75ED0FD010481002319F0A3
+:10E90A0016D002FFE2CF13D00E7F82D002FD08C0DC
+:10E91A00FD010381013009F44DD009D002FFFDCF7A
+:10E92A0000810B7F75D00F77008322968ACFE8EE9D
+:10E93A00F0E0008108950CD00091A00201870081C7
+:10E94A000E7F0BD0008102FFFDCF00810B7F05C037
+:10E95A00E8EEF0E00081077F7ACF008300810F772D
+:10E96A0076CF9D0129D056D01181105829F01A95D9
+:10E97A0019F01A9589F01CC0EBDFF18700E00093CB
+:10E98A00F10018D0008102FFFDCF00810B7F40D03B
+:10E99A000F770083D9010895A8EEB0E01C91177F84
+:10E9AA001C930F77E00FFB1F00810093F100E6CF65
+:10E9BA0034D0EFCFBCDF4ACF01D000D00091F100B4
+:10E9CA0008953B2F4A2F26D001810130D1F0023021
+:10E9DA00D1F45ED0B1F4F2DF0F7799F00093E90039
+:10E9EA00ABEEB0E01C9110FF0CC01C9110621C939E
+:10E9FA00B093E90021E0E00FFB1F208307D00E7FD0
+:10EA0A0001C00BD00083A42FB32F089590DF077F96
+:10EA1A0000838FCFEEE9F2E00895EBEEF0E000819B
+:10EA2A0000620083E8EE0081077F08953B2F6A2F7A
+:10EA3A00F1DF0181002341F1013031F1023031F57A
+:10EA4A0027D011F52091F1002F772093E900ABEE42
+:10EA5A00B0E00C9100FF18C079F00C9100610C93A2
+:10EA6A0001E010E0422F0E94C5F60093EA00B0933D
+:10EA7A00EA000C9108600C93B093E900E20FFB1FC7
+:10EA8A00B083C4DF0E7F01C0C8DF0083A62FBCCFCE
+:10EA9A0095DF1091F100002308951B2F2A2FE1EA38
+:10EAAA00F2E000E0048301E005BF02E005BF7894CC
+:10EABA00A7EDB0E011D000680C93A8ED0C910069A5
+:10EACA000C930AD001600C93B083B1830CEF0093CE
+:10EADA000F01A22FB12F08950C910F7B0C930C916B
+:10EAEA000895E7ED0CD0E0EECDD0D5D0E2EE07D018
+:10EAFA0000810860C2D0C4D0F093A3020895F0E068
+:10EB0A0000810160C1C0BA93AA93E1EAF2E0A9EDDB
+:10EB1A00B0E00C9100FF10C00281002369F401E00B
+:10EB2A00028301E60383A2EE0C9108600C93A0EE27
+:10EB3A000C910E7F0C9303C00481013009F4B48355
+:10EB4A000581013041F401E00093EA00B093EA0044
+:10EB5A00B093A002B583B093E9000091E80003FFE7
+:10EB6A0002C00E94AFF3A991B9910895BA93AA93EA
+:10EB7A009A938A93FA93EA933A922A921A920A9267
+:10EB8A007A936A935A934A933A932A931A930A93D3
+:10EB9A008FB79BB7A1EAB2E0EAEDD6D000FF17C063
+:10EBAA000EEF0083E9ED008100FF0CC001E0FD01DA
+:10EBBA00028301E66CD0E2EEC7D00860008391DFE1
+:10EBCA005FD005C000E0FD01028302E660D0EAEDF5
+:10EBDA00BBD001FF0AC00DEF0083E9ED008101FF00
+:10EBEA0002C003E601C004E651D0ADD002FF02C064
+:10EBFA000BEF0083008100FF0CC00EEF0083E2EEF2
+:10EC0A000081006100830FEE0093E10098D005E6D1
+:10EC1A003DD099D004FF06C09AD00FEE018729D0C3
+:10EC2A0006E634D090D005FF07C023D00FED00933D
+:10EC3A00E1008ED007E62AD086D003FF05C007EF91
+:10EC4A001CD008E623D005839BBF8FBF0991199179
+:10EC5A00299139914991599169917991099019901C
+:10EC6A0029903990E991F99189919991A991B9914C
+:10EC7A001895E2EE00810F7E07C000830C942AF3F8
+:10EC8A00E0EEF0E000810E7F00830895FD0103832A
+:10EC9A0001E0048308958A9380E002C001E007BB83
+:10ECAA0052D002FD42C04BD009B50D7F09BDF09389
+:10ECBA00B100F093B000F093B20001E007BB082F57
+:10ECCA00ECE8F1E0FBBFF0EE0C9400F706E109BDB9
+:10ECDA0011C002E1FCCF0EE0FACF0AE0F8CF06E05D
+:10ECEA00F6CF02E0F4CF0AE1F2CF0EE1F0CF06E16F
+:10ECFA0009BD80E08395E1EB27D00560008309B563
+:10ED0A0000FD03C007B30130D1F7F083F18307B3E5
+:10ED1A00013021F21CD001E007BBE1EB0081056064
+:10ED2A00008307B30130E9F7BBCFF093B000F0934B
+:10ED3A00B100F093B2000BEF008389910895E8EDDA
+:10ED4A0000810062A1CFE1EEF0E000810895E8EDD4
+:10ED5A0000810F7D99CF00008895FECF06EE0DBF8A
+:10ED6A0002E00EBFC7EED4E00E946DF7002311F057
+:10ED7A000E947FF70E9477F00E94B0F60C94B0F6DA
+:10ED8A004A951AF0000F111FFBCF08950024112491
+:10ED9A00EFE0001F111F001C111C0416150610F0CD
+:10EDAA00041A150AEA95AAF7001F111FA001009577
+:10EDBA00109508955195419550400895FF27552380
+:10EDCA0012F4F160F7DF112312F4F09507D00E94D4
+:10EDDA00CBF6F0FD03D0F1FDEDCF08951195019525
+:10EDEA00104008957791679157914791179011FABA
+:10EDFA00279037900895F9DF041B10E003C0F4DF71
+:10EE0A00041B150B20E030E005C0ECDF041B150BDA
+:10EE1A00260B370BB8F010FC17C047910790E00F8C
+:10EE2A00F11F0417100540E02407340758F436F49C
+:10EE3A0006910024F101E01BF0090994E00FF11F8B
+:10EE4A0027903790F101099411F4D6F7F1CF319652
+:10EE5A000EF0319650E060E070E047914B3F48F089
+:10EE6A0089F34F3F29F04E3F11F0779167915791FF
+:10EE7A004791041B150B260B370B39F318F3E7CF11
+:10EE8A00FA92EA92DA92CA92BA92AA929A928A92D8
+:10EE9A007A926A925A924A92BA93AA939A938A93C4
+:10EEAA000895FF84EE84DD84CC84BB84AA8499848B
+:10EEBA0088847F806E805D804C80BB81AA81998125
+:10EECA008881F0E00FB6F894CE0FDF1F0FBE0895C9
+:10EEDA0001E0089520E008D0E9F708953BBF2791A3
+:10EEEA003BB702D0D9F708952D9301501040202F37
+:10EEFA00212B089502EA402E00EE502E01E0602EEA
+:10EF0A00F201362D6BBE07911691F201EE5FFF4FAB
+:10EF1A003F4F3BBFA791B691F201362DEC5FFF4FF1
+:10EF2A003F4F3BBF479157916691242F252B262BA4
+:10EF3A0021F0FA01362FD2DF01C0CCDF07E0400E04
+:10EF4A0000E0501E601EA201662D493A504E6140F3
+:10EF5A00B8F208952F930DD02F9101D0089541D082
+:10EF6A00F12FE02F2BBF45E047BFE8953AD014D0E8
+:10EF7A00089537D0F12FE02F2BBF43E047BFE89524
+:10EF8A0030D008952ED0F12FE02F2BBF43E047BF9A
+:10EF9A00E89527D001D0089524D041E147BFE895EC
+:10EFAA0020C01FD0F12FE02F2BBF41E247BFC895E9
+:10EFBA00002D17C016D0F12FE02F2BBF49E047BF15
+:10EFCA00C895002D0EC0F32FE22F012E102E41E01E
+:10EFDA0047BFE89506C005D0002E29E027BFE8956F
+:10EFEA0000C0022E27B720FDFCCF202D0895022E47
+:10EFFA0027B726FDFCCF202D08950E9445F72497B8
+:10F00A000A831B832A013B01590111C08E5F9F4F5E
+:10F01A00AF4F01E0800E00E0901E00E8801600E08D
+:10F02A00900608F464C0860197010E94B4F70A2D7D
+:10F03A000B2909F467C0042D10E040E051E00E945A
+:10F04A00E3F6652F660F660BC201D301841B950B8D
+:10F05A00A60BB60B6C017D0100E8802E03C00A2DB9
+:10F06A000B2991F18C0184159505A605B705D0F0F9
+:10F07A00EA81FB813191EA83FB8339833FEFA30E57
+:10F08A00B31E3A2D3B2941F02191EA83FB83288361
+:10F09A000FEFA00EB01E1BC0F8013196ABBF069150
+:10F0AA00088315C0F801ABBF46914983AC01BD0185
+:10F0BA004F5F5F4F6F4F7F4F4415550566057705C4
+:10F0CA0059F7EA81FB81E0CF22D0088319839C019A
+:10F0DA00088119810E94E8F78E5F9F4FAF4FBF4F9B
+:10F0EA008A9409F0BCCFC601AE2D882499240FD08A
+:10F0FA00312F0F3F3F4F09F489CF860197010E94B4
+:10F10A00BEF791CF01E02496E0E10C9456F78C010A
+:10F11A002A2F0C946CF00E9451F780E090E0A0E056
+:10F12A00B0E08C019D010E94BEF780509F4FAF4F07
+:10F13A00BF4F8F3F0FED900701E0A007B80788F394
+:10F14A00E4E00C9462F712010020FE010020EB03B8
+:10F15A00FB2F0000010203010902120001010080D5
+:10F16A00320904000000000000000C0341005400B2
+:10F17A004D0045004C001E03410054003900300088
+:10F18A00550053004200310032003800200044008C
+:10F19A00460055000C0331002E0030002E003000CE
+:04F1AA00040309044D
+:10FFE4000C94AFF70C94D6F70C94DFF70C94E8F765
+:0CFFF4000C94B4F70C94C7F70C94F0F7D1
+:040000031000E00009
+:00000001FF
diff --git a/util/bootloader_atmega16u4_1_0_1.hex b/util/bootloader_atmega16u4_1_0_1.hex
new file mode 100644
index 0000000000..8b4cd39152
--- /dev/null
+++ b/util/bootloader_atmega16u4_1_0_1.hex
@@ -0,0 +1,258 @@
+:020000020000FC
+:043000000C94B91E55
+:043028000C94C31D24
+:10302F0012010002FF010020EB03F32F0000010249
+:10303F0000010902120001010080320904000000A2
+:10304F00000000000C03410054004D0045004C00EF
+:10305F002603410054006D00310036005500340046
+:10306F0020004400460055002000560031002E007D
+:10307F0030002E0032000403090419010C01000076
+:06308F000C000001C03F2F
+:1030960012BD01BDF89A00B5089501E00895F999A9
+:1030A600FECF12BD01BD20BDFA9AF99AF6CFF99965
+:1030B600FECF0C944B18F80104910895F801149171
+:1030C6003196FACF0091610000930C0100E800935D
+:1030D600610001E00093610005BF02E005BF0C94AA
+:1030E6007D180091D70001600093D7000E94721EE0
+:1030F60001E008950E94BA1D0E94C11DFDCF78D03F
+:103106000F777BD078D074D0006177D0789408950B
+:103116006CD076D009B500FFFDCFF89469D00F7D4D
+:103126006CD05DD00091E000077F0093E0000E9424
+:103136008D1B0091E20001600093E2000091E20025
+:1031460008600093E200E2CF0091D90000FF0EC0B4
+:1031560000910D01002351F401E000930D013AD0D6
+:1031660002601183008347D0D3DF39D00091D900A4
+:1031760000FD13C000910D01013079F400E00093C9
+:103186000D010093220226D0046011830083009172
+:10319600E00001600093E00028D0E3E2F2E0008165
+:1031A600018100FF0DC0008111811E7F1183008304
+:1031B60001E00093EA0000E00093EA000093220297
+:1031C60000E00093E9000091E80003FF02C00E94BE
+:1031D600021C0895E3E2F2E0008111810895009156
+:1031E600E0000E7F0093E000089502D0006205C063
+:1031F6000091D8000895FCDF00680093D800089578
+:1032060000E00E949D1E24D000918100036000937F
+:1032160081000091600007FFFCCF00E8009360008A
+:1032260000E0009381000E94721E2091840030917C
+:1032360085000ED02D3D354002B7007F02BF02B794
+:103246000A6402BF10F002E101C002E009BD089560
+:1032560000E00093810000938000009385000093B6
+:10326600840001E006BB08950E94D91E239751D120
+:10327600A0E0B1E04BD10093040148D100930501D1
+:1032860055D100E000930901FD0104811581012B50
+:1032960051F436D100910701002309F4B8C000E0CB
+:1032A60000930701B4C056D102FFFDCF2FD106838C
+:1032B6002DD100930F012AD10093100127D100933D
+:1032C600110124D10093120121D10093130102852B
+:1032D600309113014091120150911101209110017A
+:1032E60016811A9541F01250A9F01A9591F11A9586
+:1032F60009F472C08AC010910F01113011F411E067
+:1033060001C010E0138798D00C3F11F412D17EC093
+:1033160079D17CC091D010910F01112329F01A9513
+:1033260049F01A95A1F072C010E013870C3F09F01E
+:103336006DC0ECCF5CD103C050D109F467C054D145
+:1033460049D10F3FC9F305E0009309015FC011E0C1
+:10335600ECCFD2D029F00250E1F10A9541F056C0E7
+:10336600FCD00E94CD1F0FEF00930A014FC022230D
+:1033760019F02A9579F04AC05AD00DEF04BF6BD0E8
+:10338600E9D003FFFDCF69D04CD045D000E00E94C4
+:10339600831EFFCF4CD05FD0DDD003FFFDCF5DD0C5
+:1033A6003AD03FD00FEF1FE004C009811A810150C7
+:1033B600104009831A8309811A81012BB1F700E8AD
+:1033C6000093610000910C01009361000C940000D1
+:1033D600FFCF01E003871AC08FD019F00A9539F0A4
+:1033E60015C0235098F4B9D002E000870FC02053CF
+:1033F60039F02A9541F02F52B1F32A95A1F306C070
+:1034060002E00883F0CF01E0FCCFA7D079D0239665
+:10341600E4E00C94E61E0091D8000F770093D800E4
+:10342600089509B50D7F09BD00E009BD089501E0C5
+:1034360005BF00E005BF089521835083438332838F
+:103446001091E8001B7F1093E8001091E8001F77A9
+:103456001093E800089581D053C068D051D0F894F5
+:103466000091E00001600093E0000895219751D09B
+:10347600E0E0F1E04BD0048349D0058357D00681C4
+:10348600035019F00250A1F00AC036D021F00A9577
+:1034960051F00A9521F402850C3F19F44AD0219681
+:1034A600089566D0FCCF01810093F10000810CC025
+:1034B600EFE0F1E011810081002319F00A9549F04F
+:1034C600EECF135018F400E00093F10019D03ED06F
+:1034D600E6CF105339F01A9539F01F5241F01A957C
+:1034E60041F0F4CF08E5F0CF00E00BD0EDCF02E0DD
+:1034F600FCCF04E006D0E8CF00910F010023089529
+:1035060020C010E020E030E00C943B1F0091F10059
+:10351600089500D00091F10008830091F10008831E
+:1035260008950091EB0000620093EB001ED0077F28
+:1035360019C0F7DF02E00093080103E000930901D8
+:1035460008955DD007D000FFFDCF089503D002FF98
+:10355600FDCF03C00091E800089507D00B7F02D08D
+:1035660004D00F770093E80008950091E8000895CD
+:103576000E94D81EA0E0B1E0FD0139D006C02AD0D5
+:103586000093F1002AD059F43AD0082F092BA1F064
+:10359600E1DF02FD11C0DEDF00FFFDCF4424042D74
+:1035A6004394003289F300910B0100231DD039F3B7
+:1035B60011970E945A18E4CFCDDF00FFFDCF1FD030
+:1035C600C9DF00FFFDCFC6DF02FFFDCFC6DFE5E0A6
+:1035D6000C94E51E11970C945E1806D00F5F1F4FD2
+:1035E6001C930E93019708950D911C910