Skip to the content
PCBKitNew board
2 layers45 × 87 mmTp1, the printed circuit board in 3D

TP1 is the programmer for the open source security key - TKey

Size
45 × 87 mm
Copper layers
2
Thickness
1.6 mm
Parts
22
Nets
45
Pads
128
Tracks, vias
163, 5
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
5 Jul 2024
Updated
16 Oct 2026

Overview

Tp1 is an open-source printed circuit board by tillitis, from the tillitis/tp1 repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 2-layer board of 45 × 87 mm with 22 parts on 45 nets, routed with 163 tracks and 5 vias.

It is built around the SC0915, 0ZCJ0005FF2E and AO3400A, with the AO3401A among its other parts. Its parts include 9 resistors, 4 connectors, 2 transistors, 1 IC and 1 fuse. It belongs with the interfaces and adapters boards and the RP2040 boards of this library.

Main components

4

README

README.md

TKey Programmer 1

The TKey Programmer 1 (TP1) board is a tool used to program the FPGA on a TKey. It consists of a RPI Pico and a jig where the TKey can be placed.

General usage

The board is interfaced using USB, and it will display itself as ID 1209:8886 Generic TP-1. The TKey is supposed to be placed in the jig and one closes the lid carefully by pressing in the middle of the jig (by the hole). To open the lid of the jig, it is easiest to simply lift up on the lever.

The TP1 board supports two host computer tools to accommodate programming of the TKey, either iceprog or pynvcm. See the chapter in the TKey Developer Handbook for a more elaborate description on how to use it.

Linux device permissions

To allow sudo-less programming, you need to be able to access the TKey Programmer USB device. This is a raw USB device that is probably not taken care of by your distribution.

You can install an udev rule that will assign the TP1 to the dialout group. You will also need to add your user to the dialout group.

Create the following udev rule at /etc/udev/rules.d:

text
# TP-1 programmer
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="1209", ATTR{idProduct}=="8886", MODE="0666", GROUP="dialout"

To reload the rules run:

text
sudo udevadm control --reload-rules
sudo usermod -aG dialout ${USER}

To apply the new group, log out and then log back in, or run the command newgrp dialout in the terminal that you are working in.

You can check the device permissions to determine if the group was successfully applied. First, use lsusb to find the location of the programmer:

text
lsusb -d 1209:8886
Bus 001 Device 023: ID 1209:8886 Generic TP-1

Then, you can check the permissions by using the bus and device numbers reported above like this:

text
ls -l /dev/bus/usb/001/023
crw-rw---- 1 root dialout 189, 22 Feb 16 14:58 /dev/bus/usb/001/023

Note that this pair of numbers is ephemeral and may change after every device insertion.

Firmware

The TP1 board runs a custom firmware developed by Blinkinlabs for Tillitis. There is also a pre-built firmware binary at fw/bin/main.uf2.

To update the firmware, either build the file main.uf2 (more instructions below) or get the pre-built file to your host computer. Then do the following:

  1. Disconnect the programming board from the host computer
  2. Press and hold the "BOOTSEL" button on the RPi2040 sub-board on the programming board
  3. Reconnect the programming board to the host computer
  4. Release the "BOOTSEL" button after connecting the programming board to the host. The board should now appear to the host as a USB connected storage device
  5. Open the storage device and drop the firmware file main.uf2 into the storage device

The programmer will update its firmware with the file and restart itself. After rebooting, the storage device will automatically be disconnected.

Building the firmware

The firmware requires the Raspberry Pi Pico SDK, the build script assumes this is located either in your home home directory, or in /usr/local. To clone to the home directory use

text
cd ~
git clone --branch 1.5.1 https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init

then run the build script in the fw folder

text
./build.sh

Note that our container image (tkey-builder) places the pico-sdk directory in /usr/local. For normal development, it is usually left in the user's home directory.

See fw/README.md for further instructions.

KiCad

The PCB is built using KiCad version 7. Production files are built in CI using KiBot, see the Makefile for exact version.

License

Hardware

Unless otherwise noted, this project is licensed under CERN Open Hardware License Version 2 - Strongly Reciprocal, see full license under LICENSE.txt.

text
Copyright Tillitis AB 2022-2024.

This source describes Open Hardware and is licensed under the CERN-OHL-S v2.

You may redistribute and modify this source and make products using it under
the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).

This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY,
INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A
PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.

Source location: https://github.com/tillitis/tp1

As per CERN-OHL-S v2 section 4, should You produce hardware based on this
source, You must where practicable maintain the Source Location visible
on the external case of the product or its packaging, and in its
documentation, even after modification.

The CERN-OHL-S user guide is included to make it easier to follow the license, both as a Licensor or a Licensee.

Firmware

The firmware running on the TP1 is licensed under MIT License, see the full license fw/LICENSE.

Copyright (c) 2023 Tillitis AB.

Raspberry Pi Pico

TKey Programmer board uses the Raspberry Pi Pico hardware, which are provided by Raspberry Pi Ltd. For more details, visit the official Raspberry Pi Pico documentation at https://www.raspberrypi.com/licensing/

Prototypes

Under prototypes/, an earlier version of the TP1 can be found, such as the mta1-usb-v1-programmer.

History

This repo was created by filtering out relevant commits and files from the tillitis/tillits-key1 repo.

The filtering removed all files and commits that weren't related to the tp1 hardware. This was done using git-filter-repo.

To replicate the results up until commit f1158b1 in this repo, checkout commit 354aecb in tillitis/tillitis-key1 and run git-filter-repo --path hw/boards/tp1 --path hw/boards/mta1-usb-v1-programmer --path hw/boards/KiCad-RP Pico

All filtered commits have intact date, author, and code. Some unrelated files are removed from some commits, but the commit messages are left unchanged. Commit sha, tags and signatures are new. For complete history, please see tillitis/tillitis-key1 from commit 354aecb and earlier.

Parts

22
QtyValueFootprintReferences
7100Rmta1:ERJ2G(0402)_LR11, R12, R13, R14, R15, R16, R17
3FiducialFiducial:Fiducial_1mm_Mask2mmFID1, FID2, FIDe
210Kmta1:ERJ2G(0402)_LR7, R8
2Conn_01x20Connector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalJ1, J2
150mAFuse:Fuse_1206_3216MetricF1
1AO3400APackage_TO_SOT_SMD:SOT-23Q1
1AO3401APackage_TO_SOT_SMD:SOT-23Q2
1BC-1-208mta1:BC-1-208J3
1BC-1-701mta1:BC-1-701J4
1PicoMCU_RaspberryPi_and_Boards:RPi_Pico_SMD_reflowU2
1mta1_usb_ch552_flatmta1:mta1_usb_ch552_flatJIG1

The 21 most common of 22 parts.

Questions

How big is the Tp1 PCB?

It measures 45 × 87 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Tp1 use?

22 parts, built around the SC0915, 0ZCJ0005FF2E, AO3400A and AO3401A. 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 Tp1 KiCad files?

From the tillitis/tp1 repository on GitHub, at the commit this page was made from: the board is hw/tp1.kicad_pcb and its schematic hw/tp1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Tp1 design in my own project?

Its repository publishes it under the CERN-OHL-S-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from tillitis/tp1

1
  • 2 layers45 × 90 mmMta1-usb v1-programmer, the printed circuit board in 3D

    Mta1-usb v1-programmer

    tillitis/tp1

    TP1 is the programmer for the open source security key - TKey

    25 parts4CERN-OHL-S-2.0

Similar boards

  • 2 layers19.6 × 24.1 mmMoleblink, the printed circuit board in 3D

    Moleblink

    rjhsun/moleblink

    ATtiny85-based illuminated PCB keychain featuring the Blacker House crest

    31 parts2CC-BY-SA-4.0
  • 2 layers143.8 × 80 mmEcu, the printed circuit board in 3D

    Ecu

    kajusK/Pneumobil

    Control and telemetry system for BUT Falcon pneumobil for Aventics Pneumobil competition

    269 parts
  • 4 layers150 × 90 mmMisrc v2.5-rounded, the printed circuit board in 3D

    Misrc v2.5-rounded

    Stefan-Olt/MISRC

    MISRC Is a multi channel RF capture device for FM RF, S-Video, CVBS RAW capture and anything else, but intended and supported for the decode family of projects vhs-decode, ld-decode, hifi-decode.

    328 parts236CC-BY-4.0
  • 4 layers140 × 100 mmDc usv, the printed circuit board in 3D

    Dc usv

    TobleMiner/DC-UPS

    A small DC UPS, designed to keep small appliances like consumer network equipment running during power outages

    351 parts223CERN-OHL-P-2.0
  • 4 layers70 × 70 mmAi camera, the printed circuit board in 3D

    Ai camera

    maxlab-io/tokay-lite-pcb

    Tokay AI Camera - ESP32 camera development board

    161 parts130CERN-OHL-P-2.0
  • 2 layers191.5 × 76 mmPcb project, the printed circuit board in 3D

    Pcb project

    CrashOverride85/zc95

    4 channel EStim box inspired by the mk312bt, with Lua scripting support

    337 parts117GPL-3.0
  • 2 layers271.5 × 91.8 mmFusion, the printed circuit board in 3D

    Fusion

    crides/fusion

    A folded minimally spaced choc mini (PG1232) keyboard for traveling

    126 parts84
  • 4 layers118 × 117 mmCm4-robot, the printed circuit board in 3D

    Cm4-robot

    Twisted-Fields/acorn-robot-electronics

    PCB hardware designs in KICAD for Acorn, the precision farming rover from Twisted Fields.

    268 parts81