just another cortex kit - Cortex M0 development kit with an Atmel SAM D21, a USB device port, an LDO, some passives and breakout headers

Similar projects worth following
JACK is a development kit powered by an Atmel SAM D21; it's pretty barebone, that is it has just the bare minimum to make it work while keeping an eye on reliability.


  • a USB device port with cable shield filtering and transient suppression
  • a 3.3V LDO with bypass caps and filters to separate analog VDD from digital VDD
  • Schottky diodes to protect the possible power inputs
  • a 12.288 MHz crystal for the master clock (pretty useful in audio applications)
  • a reset pushbutton with debounce cap and pullup resistor
  • a blue LED on pin 32 for the classic Blinky test
  • two breakout headers (all pins broken out except 2 pins for crystal and 2 for USB)
  • the ATSAMD21G18 in TQFP package (max specs for the D21, easier to solder than a QFN)
  • Plus: Full compatibility with Arduino Zero firmware (without debugging options because there's no programmer/debugger chip on the board)


JACK hardware is OSHW, licensed under CERN OHL 1.2

JACK software is LGPL 2.1 (because it's based on the Arduino Core)

Installation and usage guides

Arduino IDE setup for JACK

  1. Donwload the Arduino IDE 1.6.5
  2. Go to Tools->Board->Boards Manager...
  3. Install Arduino SAMD Boards (32-bit ARM Cortex-M0+) 1.6.1
  4. Download the Arduino Core modified for JACK compatibility:
  5. Move the following files/folders to C:\Users\mperla.CORP\AppData\Roaming\Arduino15\packages\arduino\hardware\samd\1.6.1 (or whatever your Arduino SAMD package path is):
    1. bootloaders\jack
    2. cores\jack
    3. variants\jack
    4. boards.txt

A JACK board flashed with the modded Arduino core will show as an "Arduino Zero bootloader (COMn)" port on your PC; if you can't find the board, but it shows as "Unknown hardware" you shall update its drivers with the Arduino Zero ones (you can find them in ..\your_arduino_path\arduino-1.6.5-r2\drivers)

Using JACK with the Arduino IDE

  • Connect JACK to an USB port on your PC, if it has never been programmed you should see an Arduino Zero bootloader serial port device
  • Open your Arduino IDE and write a sketch (e.g.: Blink LED on pin 32/PIN_WIRE_SCL)
  • Select Arduino Zero (JACK) from Tools->Board
  • Select the Arduino Zero (Native USB Port) under Tools->Port (or just select the correct port associated to Arduino Zero bootloader in your device manager)
  • Click Upload, when finished the device will reset and start the sketch

NOTE: as of now the USB CDC Arduino code is not working properly therefore when you upload a sketch on JACK, then detach and reattach it to the USB port, you will see an Unknown device. Follow the below guide to reprogram it.

Reset JACK to run the bootloader

The SAM-BA bootloader running on the Zero has a pretty nice feature that you can enable via code, called double tap reset; this feature allows an user to force bootloader startup if there's any issue on the user code. Here's how it works:

  • Attach JACK to the USB port (or detach-attach)
  • As soon as you attach it, click the RESET button twice in a small frame of time
  • If everything was fine, you shall know see again the JACK serial port on your PC

The time frame you have to double tap the reset button is not so big (you gotta do that before the USB Host tries to enumerate JACK, so it's less than half a second) but it's enough. This feature is pretty cool because it is helping me a lot in this phase where the USB CDC class of the Arduino Core is not yet working.

Video on how to start the bootloader here:

System diagrams

Board diagram

Software diagram

  • 1 × ATSAMD21G18 ARM Cortex-M0+ MCU 48MHz,256KB Flash, 32KB SRAM
  • 1 × NUF2221W1T2G USB Transient Suppressor
  • 1 × NCV1117ST33T3G 3.3V fixed LDO, 1A max current output
  • 1 × 47346-0001 Connectors and Accessories / Telecom and Datacom (Modular) Connectors
  • 1 × FSMSM - miniature pushbutton |RESET SPST miniature pushbutton

View all 21 components

  • Hacking JACK proto to become HACK+ proto

    Michele Perla01/14/2016 at 11:05 0 comments

    Hi there,

    I went to a parts scavenging hunt through some of my old electronics gizmos that were waiting to be torn apart to find a 32.768 KHz crystal.

    I found one and I'm going to solder it to PA00-PA01 pins of the ATSAMD21G mcu on JACK in order to make it more like the Arduino Zero and #HACK. In fact, the Arduino Zero core sets the main clock of the SAMD21 to the XOSC32 source. This will make JACK a HACK+ boards, to speak. We'll see what happens.



  • Semifinals deadline met + some videos

    Michele Perla08/16/2015 at 22:07 0 comments

    Hey people,

    I just finished uploading some videos, one of them is the Semifinals one (here):

    Today I spent most of the time testing various functionalities and documenting them, some of them worked, some of them did not. Let's start with what works:

    PWM and Analog inputs:

    I2CSAM-BA bootloader (double tap RESET function to run bootloader mode)

    I tried SPI with the Sparkfun Micro OLED module and its companion library but it gave me some compiler errors, I tried a quick-and-dirty fix for that but even after that the SPI bus seemed like plain dead, no signal on no pin (MOSI, SCLK, CS). USB is also the main pain , 'cause as seen in the videos as soon as a sketch starts the USB dies. Thanks @Atmel Corporation for implementing the double tap RESET functionality on the SAM-BA bootloader, that saved me here.

    I also added the "double tap RESET" video in the details, along with a board diagram and a software diagram that briefly depict what JACK does and how it works.

    Now, I'll go get some deserved sleep since the last week was quite low on sleep hours (everybody in the #Hacker Channel knows what I'm talking about!)



  • Protos shipped + Installation and usage guide

    Michele Perla08/13/2015 at 09:55 0 comments

    Hey there,

    Yesterday I assembled another prototype cause two of the four I made were not working and I needed three to deliver to Supplyframe Inc..

    I used a mix of hand soldering (for the TQFP package and nearby crystal/caps/ferrite bead) and reflow soldering (everything else; I placed some solder on all pads, a lot of flux, then I placed the components and reflowed them using an hot air station).

    I might say that I'll use reflow soldering a lot from now on, because it was pretty easy and faster than anything I tried on these protos. I had a small issue on the LED that was not working, but I just had to add some solder on its pads and on the 68 Ohm resistor pads and it blinked correctly.

    Now, for the guides, please take a look at the details of the project, which I'll update in a few minutes.



  • First prototypes assembled + tests

    Michele Perla08/11/2015 at 09:41 0 comments

    Hey there,

    As promised, I came back from holidays last Sunday afternoon, and as soon as I got home I took my soldering iron and started assembling one proto. I had some issues cause I only had 1.2mm solder that slowed me down a lot (it took me 4 hours to get it done), but when I connected it to the Atmel ICE it was promptly recognized. Good.

    Programming the bootloader worked too, but then JACK won't enumerate.

    Monday morning I had to work, so I took my first proto with me along with the Atmel ICE debugger; I fiddled with the Arduino Zero bootloader first, to switch the bootloader pin to anything diffferent than PA15 which is used on my board as input for the 12.288 MHz crystal, I modded the makefile to point to correct directories, and TADA, I now have a JACK bootloader; I added a JACK board definition in the boards.txt file of the SAMD Arduino devices, opened Arduino, flashed the bootloader and and the device DID enumerate, as an "Arduino Zero bootloader" device (just like what you'd except when connecting a Zero's native USB port, not the EDBG one). I could also flash a Blink sketch, but it won't start automatically and randomly if I touched some pins it would eventually start. I thought that this issue surely is connected to the clock not being the same as the Zero.

    Monday afternoon I went home early to start assembly of three others boards (the judges' boards); before that I bought a 0.5mm solder that helped me A LOT during production, it took me in fact 4 hours to make THREE boards (that's 300% faster than Sunday). I had some issues on two boards for the USB transient suppressor chip, on one I messed up 2 of 6 pins of that IC :/ In fact, these boards are still recognized by the Atmel ICE, but one of them won't show up at all as a USB device, the other would report "Unknown device". I'll try to reflow these chips using an hot air gun, if that does not work, I'll take off some parts and solder them on two spare boards

    Photos here:

    So far so good.

    Almost there...

    A pair of finished boards, one connected to the Atmel ICE.

    You can also find a video of the device in action (connection to Atmel ICE, bootloader flashing, enumeration as Arduino Zero, programming of Blink sketch, LED blinking):

    To solve the issue that I had yesterday I indeed had to change the Clock Generators; the Zero takes the main oscillator from an external 32.768 KHz crystal while I'm using a 12.288 MHz crystal; these crystals have separate pins. I then reconfigured the Zero startup.c file to use XOSC rather than XOSC32K as main source and you can see in the video that as soon as I program the device with the Blink sketch, it loads it.

    I still have a software issue, that is when I flash JACK with a sketch it won't enumerate anymore as an "Arduino Zero bootloader" COM port so I cannot program it again. I also enabled an option that if you tap twice the RESET button the bootloader is forced to load again, but it won't show up either.

    See you soon for other updates.



  • Going out for holidays + little mishap on cap C8

    Michele Perla07/31/2015 at 15:17 0 comments

    Hello there,

    I'm going out for holidays today and I'll come back in Italy Saturday 8th August evening; I'll spend next Saturday night and all Sunday 9th soldering and testing the prototypes to be sent in before the deadline.

    I had some spare time to write a little instruction log here, and while looking for the best order to solder the components I noticed that I had a mishap on cap C8, the layout was done with package 0402 but I ordered 0603 parts... I'm sure that won't be a problem but this issue coupled with the JACK logo not being printed on silkscreen, and the fact that a few components could be moved around to improve easiness of mass production (make all passives oriented in the same way) leads me to what I need to change in revision 2.

    Stay tuned for next weekend's progress!

  • PCBs delivered! But LDOs are still out in the wild...

    Michele Perla07/30/2015 at 09:36 0 comments

    Hello there,

    another update: the PCBs have been delivered this morning in all their Blue slik+ENIG finish beauty! Too bad the JACK logo didn't come out on the silk screen :(

    Photo attached:

    Lastly, my order from RS Components got split in two for no apparent reason, and I'm therefore short of 20 LDOs. Luckily I remembered to add ONE on my bulk Mouser order, but still, if I don't get these missing LDOs soon I'll be forced to wait to build my test units. Oh well, at least I can flash ONE unit for my tests.



  • Mouser order + TV-B-Gone shipped!

    Michele Perla07/27/2015 at 15:48 0 comments

    Hello there,

    Quick update, I just received the package from Mouser! Ordered Friday at 6 PM and received at 2 PM today, that is FAST.

    Little "early-christmas" photo here:

    This thing is getting real...


  • Parts, PCBs and ICE Debugger on their way!

    Michele Perla07/27/2015 at 10:28 0 comments

    Hey people,

    In the weekend I ordered all the stuff that I need to assembly the test units; the PCBs are coming from Smart Prototyping (, a nice electronics services company based in China, while components and ICE Debugger were ordered from @Mouser Electronics and from RS Components (I forgot to add a few spare components in the big order from Mouser, plus Mouser is not allowed to ship chemicals to Italy and I need a flux cleaner that RS can ship since they have a storage here in Italy). Of course, I went with the expedite options where possible because I'm leaving for holidays this Friday 31st to Croatia and I'll be back in Italy on Saturday 8th August. I hope I'll receive everything within this Thursday, so that I could at least have the time to assemble one board and test it ( I'll do that overnight, of course :D ) before leaving for holidays. I can't wait to see the blinky LED hello world thingy flashed on JACK :D

    I'll post an update before my holidays begin.

    Cheers, Mick

    PS: I'm updating the components list to reflect the real-life components I chose for this project ;)

  • 3D Preview (woohoo)

    Michele Perla07/23/2015 at 18:07 0 comments

    Hi people,

    before proceeding with PCB and components ordering I decided to give a try at 3D modeling of a PCB. I used eagleUp to export from EAGLE to Sketchup, I donwloaded/created some missing models and I could finally see what the board will look like when finished.

    The 3D preview is really helpful too to see if there's any misalignment of the actual part or if some part intersects with others.

    This project looks really promising. And the blue PCB will be sooo coooooool

    Next step will be ordering PCBs from Elecrow and parts from @Mouser Electronics. I'll receive 10 PCBs but I'll populate 5 only, 3 of which are going to @Benchoff , @Mike Szczys, @Adam Fabio and all the Hackaday people to judge. I'll keep one for me, and I'll probably send one away to be reviewed by Dave Jones maybe? That'd be really cool, too.

    PS: @Mouser Electronics and @Atmel Corporation, any sample of the parts listed in the Components section will be much appreciated.

    PPS: every update is already on github ;)

  • Reduced board size, now well under 3x5 cm^2!

    Michele Perla07/15/2015 at 21:29 0 comments

    Hey there, quick update:

    I managed to shrink the board to fit in less than 5 cm in lenght, it now sports an 8 pin side header. This way the board can be produced using the cheapest available option from any fabhouse, that is less than 5x5 cm^2.

    I'll post updated photos here tomorrow, while Github is already up-to-date.


View all 17 project logs

  • 1
    Step 1

    Fab the boards

  • 2
    Step 2

    Source the components + an Atmel ICE Debugger (mandatory for first time flashing of bootloader)

  • 3
    Step 3

    Solder components on the board

    I'll follow the following order (probably going to change as I still have to do a prototype):

    IC2, X1, C13, C12, C2, C4, C3, C9, C1, R4, C6, L1, L2, C7, C5, R2, J1, IC1, D2, R2, R3, R1, SW1, R5, C8, C11, IC3, C10, D1, D2, HEADERS

View all 6 instructions

Enjoy this project?



769591115 wrote 11/30/2016 at 05:35 point

Can you help me?

I am trying on ATSAMD21 with native usb. My Arduino IDE version is 1.6.13 from And I have done what Jack said. But during burning bootloader, there is a following error.

Arduino: 1.6.13 (Windows 7), Board: "HACK"

Open On-Chip Debugger 0.9.0-gd4b7679 (2015-06-10-22:24)
Licensed under GNU GPL v2
For bug reports, read
debug_level: 0
adapter speed: 500 kHz
adapter_nsrst_delay: 100
cortex_m reset_config sysresetreq
Error: unable to find CMSIS-DAP device

Error while burning bootloader.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

  Are you sure? yes | no

asprakash83 wrote 10/13/2016 at 12:47 point

Hi. Its a good project. I have few clarification here.  

1. You used ATSAMD21G18, But mentioned "SAMD21E processor" on your github bootloader page. 
2. You compiled the bootloader with ATSAMD21E18A.

Please confirm.

  Are you sure? yes | no

Michele Perla wrote 10/14/2016 at 09:16 point

JACK has been discontinued for now. You can check HACK on my profile, which is basically the same board but without the 12.288 MHz clock and with the smaller SAMD21E

  Are you sure? yes | no

Jack Laidlaw wrote 09/05/2015 at 14:14 point

This is looking good! I hope you start selling these ;)

  Are you sure? yes | no

Armando Je wrote 07/13/2015 at 17:44 point

Hold on and never give up !

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates