diff --git a/Bootloaders/HID/BootloaderHID.c b/Bootloaders/HID/BootloaderHID.c
index 04fd0df3b2ff1fd39fee122b50846665685d41ec..ec094b1d05ae3f3399f164f2839a0845abb18e7e 100644
--- a/Bootloaders/HID/BootloaderHID.c
+++ b/Bootloaders/HID/BootloaderHID.c
@@ -58,6 +58,11 @@ void Application_Jump_Check(void)
 	/* If the reset source was the bootloader and the key is correct, clear it and jump to the application */
 	if ((MCUSR & (1 << WDRF)) && (MagicBootKey == MAGIC_BOOT_KEY))
 	{
+		/* Turn off the watchdog */
+		MCUSR &= ~(1 << WDRF);
+		wdt_disable();
+
+		/* Clear the boot key and jump to the user application */
 		MagicBootKey = 0;
 
 		// cppcheck-suppress constStatement
@@ -98,6 +103,9 @@ static void SetupHardware(void)
 	MCUSR &= ~(1 << WDRF);
 	wdt_disable();
 
+	/* Disable clock division */
+	clock_prescale_set(clock_div_1);
+
 	/* Relocate the interrupt vector table to the bootloader section */
 	MCUCR = (1 << IVCE);
 	MCUCR = (1 << IVSEL);
@@ -153,7 +161,7 @@ void EVENT_USB_Device_ControlRequest(void)
 			{
 				RunBootloader = false;
 			}
-			else
+			else if (PageAddress < BOOT_START_ADDR)
 			{
 				/* Erase the given FLASH page, ready to be programmed */
 				boot_page_erase(PageAddress);
diff --git a/Bootloaders/HID/BootloaderHID.h b/Bootloaders/HID/BootloaderHID.h
index 74cb267897e2283a49c9bf6084cbb60c4799582d..0eaba4655d5da5d923db535402108eed3c9a240f 100644
--- a/Bootloaders/HID/BootloaderHID.h
+++ b/Bootloaders/HID/BootloaderHID.h
@@ -67,7 +67,5 @@
 		void Application_Jump_Check(void) ATTR_INIT_SECTION(3);
 
 		void EVENT_USB_Device_ConfigurationChanged(void);
-		void EVENT_USB_Device_UnhandledControlRequest(void);
 
 #endif
-
diff --git a/Bootloaders/HID/Descriptors.c b/Bootloaders/HID/Descriptors.c
index 4c475db51da9547e73225144b9c4d94a857eb1d5..70dc9d0d30ff455caea8cb79afb7761818387fd2 100644
--- a/Bootloaders/HID/Descriptors.c
+++ b/Bootloaders/HID/Descriptors.c
@@ -110,7 +110,7 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor =
 		{
 			.Header                 = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
 
-			.InterfaceNumber        = INTERFACE_ID_Printer,
+			.InterfaceNumber        = INTERFACE_ID_GenericHID,
 			.AlternateSetting       = 0x00,
 
 			.TotalEndpoints         = 1,
diff --git a/Bootloaders/HID/Descriptors.h b/Bootloaders/HID/Descriptors.h
index 08d87e6f3a70a76beaebad09126db2bebaf22ce4..179fa31ef834066645a3b666e798f469a35c6737 100644
--- a/Bootloaders/HID/Descriptors.h
+++ b/Bootloaders/HID/Descriptors.h
@@ -60,7 +60,7 @@
 		 */
 		enum InterfaceDescriptors_t
 		{
-			INTERFACE_ID_Printer = 0, /**< Printer interface descriptor ID */
+			INTERFACE_ID_GenericHID = 0, /**< GenericHID interface descriptor ID */
 		};
 
 	/* Macros: */
diff --git a/Bootloaders/HID/makefile b/Bootloaders/HID/makefile
index a76faf06ef347b2c5c354dc17e9e5f832f409984..3176a5a57712c5f95b5c7c33f371194c78977e6b 100644
--- a/Bootloaders/HID/makefile
+++ b/Bootloaders/HID/makefile
@@ -20,7 +20,7 @@ OPTIMIZATION = s
 TARGET       = BootloaderHID
 SRC          = $(TARGET).c Descriptors.c $(LUFA_SRC_USB)
 LUFA_PATH    = ../../LUFA
-CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/
+CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -DBOOT_START_ADDR=$(BOOT_START_OFFSET) -IConfig/
 LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET)
 
 # Flash size and bootloader section sizes of the target, in KB. These must