Skip to content

Quirkbot/QuirkbotArduinoHardware

Repository files navigation

Quirkbot Arduino Hardware

Deploying Releases

  • Install node dependencies:
npm install
  • Use node version 10 (tested with 14 and it doesn't work):
nvm use 10
  • Update the version in package.json
  • Run:
npm run gulp -- build
  • When you are completely satisfied with the deployed release, run:
npm publish

Updating dependencies

Make sure to keep them updated!

Arduino Core

Copied from Arduino AVR Boards.

Check what is the latest version at the package index.

You need to patch the D_CONFIG macro from USBCore.h so it reports the board as self powered and with a maximum consumption of 100mA.

#define D_CONFIG(_totalLength,_interfaces) \
	{ 9, 2, _totalLength,_interfaces, 1, 0, USB_CONFIG_SELF_POWERED | USB_CONFIG_REMOTE_WAKEUP, USB_CONFIG_POWER_MA(USB_CONFIG_POWER) }

You need to patch CDC.cpp auto-reset routine. Add the line for (;;); right after the wdt_enable(WDTO_120MS);:

// Store boot key
*(uint16_t *)magic_key_pos = MAGIC_KEY;
// Save the watchdog state in case the reset is aborted.
wdtcsr_save = WDTCSR;
wdt_enable(WDTO_120MS);
for (;;); // add this line

You need to patch USBCore.cpp USB_Send function. We want to remove the 250 timeout completely.

Replace the block:

u8 n = USB_SendSpace(ep);
if (n == 0)
{
    if (!(--timeout))
        return -1;
    delay(1);
    continue;
}

With:

u8 n = USB_SendSpace(ep);
if (n == 0)
{
    return -1;
}

Libraries

HID

Copied from Arduino AVR Boards.*

Wire

Copied from Arduino AVR Boards.*

(*)Check what is the latest version at the package index.

Servo

From git - https://github.com/Quirkbot/Servo

Keyboard

From git - https://github.com/Quirkbot/Keyboard

Mouse

From git - https://github.com/Quirkbot/Mouse

MIDIUSB

From git - https://github.com/Quirkbot/MIDIUSB