Skip to the content
PCBKitNew board
2 layers41 × 20.3 mmAtecc508a, the printed circuit board in 3D

1Mbit I2C CRYPTO AUTH PMOD ATECC508A

Size
41 × 20.3 mm
Copper layers
2
Thickness
0.8 mm
Parts
13
Nets
16
Pads
49
Tracks, vias
117, 0
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
24 Jun 2022
Updated
18 Jul 2022

Overview

Atecc508a is an open-source printed circuit board by fm4dd, from the fm4dd/pmod-crypto repository on GitHub. It is a 2-layer board of 41 × 20.3 mm with 13 parts on 16 nets, routed with 117 tracks and 0 vias.

Its parts include 3 capacitors, 2 resistors, 2 connectors, 1 IC and 1 switch.

README

readme.md

CRYPTO PMOD

Description

This PMOD connects the Microchip ATECC508A crypto authentication device over I2C, using Digilent's PMOD interface type 6A per PMOD specification v1.3.1. The PMOD module can be chained to add additional I2C devices to the bus. The onboard I2C bus pull-up resistors can be enabled/disabled, using the DIP switch.

http://fpga.fm4dd.com/

This design is registered under the OSHWA Open Source Hardware Self-Certification:

Schematic

CRYPTO PMOD Schematics

PCB Gerber

CRYPTO PMOD Gerber V1.0

PMOD Interface Pin Assignments

PinLabelDescriptionPinLabelDescription
1-Not connected7-Not connected
2-Not connected8-Not connected
3SCLI2C clock9-Not connected
4SDAI2C data10-Not connected
5GNDground11GNDground
63V33.3V123V33.3V

All pins are passed through from connector J1 to J2, allowing to chain multiple type 6/6A PMODs.

Example Operation

Linux / Raspberry Pi

CRYPTO PMOD on PMOD2RPI

Above shows the CRYPTO PMOD, connected to a PMOD2RPI interface board. When connected through the PMOD4 connector, the module can be controlled from the Raspberry Pi under Linux. Using i2cdetect, the ATECC508A IC responds under I2C bus address 0x60 (default).

text
pi@pi-ms05:~ $ i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x08-0x77.
Continue? [Y/n]
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

To interact with the crypto IC under Linux, I am using "atecc-util", located at https://github.com/wirenboard/atecc-util. This program is a frontend to the official Microchip library cryptoauthlib at https://github.com/MicrochipTech/cryptoauthlib.

Getting the client program:

text
pi@pi-ms05:~/atecc508a $ git clone https://github.com/wirenboard/atecc-util
Cloning into 'atecc-util'...
...
Receiving objects: 100% (351/351), 83.59 KiB | 2.88 MiB/s, done.
Resolving deltas: 100% (200/200), done.

Configure the I2C bus ID as 1, to match the RPI PMOD connection:

text
pi@pi-ms05:~/atecc508a/atecc-util $ vi config.h
#pragma once

#define DEFAULT_I2C_BUS 1
#define DEFAULT_I2C_SLAVE 0xC0

#define MAX_CMDS 32

Building the client program:

text
pi@pi-ms05:~/atecc508a $ cd atecc-util/
pi@pi-ms05:~/atecc508a/atecc-util $ git submodule init
pi@pi-ms05:~/atecc508a/atecc-util $ git submodule update
remote: Enumerating objects: 47, done.
remote: Counting objects: 100% (37/37), done.
remote: Total 47 (delta 36), reused 36 (delta 36), pack-reused 10
Unpacking objects: 100% (47/47), 12.65 KiB | 172.00 KiB/s, done.
From https://github.com/MicrochipTech/cryptoauthlib
 * branch              b976f640e4643a18876e0e5e600c8106f1bbe078 -> FETCH_HEAD
Submodule path 'cryptoauthlib': checked out 'b976f640e4643a18876e0e5e600c8106f1bbe078'
pi@pi-ms05:~/atecc508a/atecc-util $ make
...

Build result:

text
pi@pi-ms05:~/atecc508a/atecc-util $ ls -l ./atecc
-rwxr-xr-x 1 pi pi 439020 Jul  9 10:55 ./atecc
pi@pi-ms05:~/atecc508a/atecc-util $ ./atecc -h
atecc-util 0.4.7 (v0.4.7-dirty), build Jul  9 2022 10:54:59
Usage: ./atecc [-bshv] -c "cmd1 cmd1_args" [-c "cmd2 cmd2_args"]

        -b <i2c bus ID>
                I2C bus ID ATECC is connected to. Default is 9
        -s <i2c slave ID>
                I2C slave ID of ATECC. Default is 0xc0
        -c "cmd [arg1 [arg2 ...]]"
                Command and its arguments.
        -h[cmd_name]
                Print this help message or help message of specific command.
        -r <num_retries>
                Max number of retries for some commands. Default is 10
        -v      Print version and exit

Reading data from the crypto IC (factory-fresh state):

text
pi@pi-ms05:~/atecc508a/atecc-util $ ./atecc -c 'info'
Found ATECC508A
pi@pi-ms05:~/atecc508a/atecc-util $ ./atecc -c 'serial'
0123**************

Below example dumps all configuration data (factory-fresh state):

text
pi@pi-ms05:~/atecc508a/atecc-util $ ./atecc -c 'dump-config -'
============= Config zone dump: =============

000: 01         001: 23         002: 98         003: 3A
004: 00         005: 00         006: 50         007: 00
...
064: 00         065: 00         066: 00         067: 00
068: FF         069: FF         070: FF         071: FF
072: FF         073: FF         074: FF         075: FF
076: FF         077: FF         078: FF         079: FF
080: FF         081: FF         082: FF         083: FF
084: 00         085: 00         086: 55         087: 55
088: FF         089: FF         090: 00         091: 00
092: 00         093: 00         094: 00         095: 00
096: 33         097: 00         098: 33         099: 00
100: 33         101: 00         102: 1C         103: 00
104: 1C         105: 00         106: 1C         107: 00
108: 1C         109: 00         110: 1C         111: 00
112: 3C         113: 00         114: 3C         115: 00
116: 3C         117: 00         118: 3C         119: 00
120: 3C         121: 00         122: 3C         123: 00
124: 3C         125: 00         126: 1C         127: 00
===== Individual locks configuration ==
 Slot 00: unlocked

Parts

13
QtyValueFootprintReferences
30.1uFCapacitor_SMD:C_0402_1005MetricC1, C2, C3
24.7KResistor_SMD:R_0603_1608MetricR1, R2
1ATECC508APackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1Conn_01x02FM4DD:Testpoint_PinHeader_1x02_P2.54mm_VerticalTP2
1JLCPCB_Order_Number_PlaceholderFM4DD:JLCPCB_Order_Number_PlaceholderRef**
1Logo_KiCad_5mmFM4DD:KiCad-Logo2_5mm_SilkScreenL1
1PMOD_02x06FM4DD:PMODPinSocket_2x06_P2.54mm_HorizontalJ1
1PMOD_02x06FM4DD:PMODHeader_2x06_P2.54mm_HorizontalJ2
1SW_DIP_x02Button_Switch_THT:SW_DIP_SPSTx02_Slide_6.7x6.64mm_W7.62mm_P2.54mm_LowProfileSW1
1TestPoint_Conn_01x01FM4DD:TestPoint_PinHeader_1x01_P2.54mm_VerticalTP1

Questions

How big is the Atecc508a PCB?

It measures 41 × 20.3 mm and has 2 copper layers, 0.8 mm thick.

What parts does the Atecc508a use?

13 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Atecc508a KiCad files?

From the fm4dd/pmod-crypto repository on GitHub, at the commit this page was made from: the board is kicad-t6a/atecc508a.kicad_pcb and its schematic kicad-t6a/atecc508a.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Atecc508a design in my own project?

Its repository states no licence, so its author keeps all rights: ask fm4dd before reusing the design.

Similar boards

  • 2 layers40 × 20 mmUsb uart, the printed circuit board in 3D

    Usb uart

    earthtojake/text-to-cad

    Design physical products with AI

    13 parts26kMIT
  • 2 layers35 × 29 mmMagSpoofTC, the printed circuit board in 3D

    MagSpoofTC

    samyk/magspoof

    A portable device that can spoof/emulate any magnetic stripe, credit card or hotel card "wirelessly", even on standard magstripe (non-NFC/RFID) readers.

    13 parts4.2k
  • 2 layers20.6 × 23.6 mmAO-03 signal amplifier, the printed circuit board in 3D

    AO-03 signal amplifier

    fossasia/pslab-scripts

    Pocket Science Lab - Scripts for Sensor Experiments

    13 parts1.6kApache-2.0
  • 2 layers47 × 35.6 mmMX7-C-35PL C11, the printed circuit board in 3D

    MX7-C-35PL C11

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    13 parts1.2k
  • 2 layers95 × 95 mmCube batteryboard, the printed circuit board in 3D

    Cube batteryboard

    willem-pennings/balancing-cube

    A cube that balances itself in a corner or edge using reaction wheels

    13 parts1.1kGPL-3.0
  • 2 layers15.2 × 20.3 mmPt100stick, the printed circuit board in 3D

    Pt100stick

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    13 parts1.1kGPL-3.0
  • 2 layers53.9 × 23.2 mmBuffer, the printed circuit board in 3D

    Buffer

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    13 parts1kGPL-3.0