-1

I've been looking to modify the Arduino Micro bootloader (specifically changing the VendorID and ProductID) of the Arduino. What bootloader comes pre-installed on the Arduino Micro? and how would I go about building and uploading a modified bootloader?

asked Mar 22, 2017 at 2:30

1 Answer 1

2

Try looking at https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/caterina/Descriptors.c

Inside that is:

/** Device descriptor structure. This descriptor, located in SRAM memory, describes the overall
 * device characteristics, including the supported USB version, control endpoint size and the
 * number of device configurations. The descriptor is read out by the USB host when the enumeration
 * process begins.
 */
const USB_Descriptor_Device_t DeviceDescriptor =
{
 .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
 .USBSpecification = VERSION_BCD(01.10),
 .Class = CDC_CSCP_CDCClass,
 .SubClass = CDC_CSCP_NoSpecificSubclass,
 .Protocol = CDC_CSCP_NoSpecificProtocol,
 .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
 .VendorID = DEVICE_VID,
 .ProductID = DEVICE_PID,
 .ReleaseNumber = VERSION_BCD(00.01),
 .ManufacturerStrIndex = 0x02,
 .ProductStrIndex = 0x01,
 .SerialNumStrIndex = NO_DESCRIPTOR,
 .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
};

...

/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
 * and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
 * Descriptor.
 */
const USB_Descriptor_String_t ProductString =
{
 .Header = {.Size = USB_STRING_LEN(16), .Type = DTYPE_String},
 #if DEVICE_PID == 0x0036
 .UnicodeString = L"Arduino Leonardo" 
 #elif DEVICE_PID == 0x0037
 .UnicodeString = L"Arduino Micro "
 #elif DEVICE_PID == 0x003C
 .UnicodeString = L"Arduino Esplora "
 #else
 .UnicodeString = L"USB IO board "
 #endif
};

and how would I go about building and uploading a modified bootloader?

You would run the Makefile which is in the same directory as the above file. Then send the resulting .hex file to your device.

answered Mar 22, 2017 at 5:06
2
  • The github.com link is broken: "404 - page not found" Commented Aug 29 at 17:00
  • @PeterMortensen Arduino reorganised their repositories. I found the new location and amended the answer. Commented Sep 4 at 22:11

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.