Skip to the content
PCBKitNew board
2 layers60.5 × 36.1 mmBoB, the printed circuit board in 3D

A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

Size
60.5 × 36.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
42
Nets
26
Pads
119
Tracks, vias
178, 105
Pours
73
Routed
Yes
KiCad
KiCad 8.99 (file 20240225)
Created
27 Jan 2023
Updated
2 Feb 2025

Overview

BoB is an open-source printed circuit board by kholia, from the kholia/ConsensusBasedTimeSync repository on GitHub. It is a 2-layer board of 60.5 × 36.1 mm with 42 parts on 26 nets, routed with 178 tracks and 105 vias.

It is built around the MCP6002-I/P and CD4148WSP. Its parts include 18 capacitors, 5 resistors, 3 ICs, 2 diodes and 2 connectors. It belongs with the radio and wireless boards of this library.

Main components

2

README

README.md

What?

We present a portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves.

We demonstrate the portability of this mechanism on a bunch of common computing platforms:

  • AMD64 PCs

  • Raspberry Pi(s)

  • Android phones

  • Raspberry Pi Pico (Yep!)

Why?

FT8, WSPR, and other digital modes need the receivers and the transmitters to be synchronized in time.

What if there is no external and reliable reference available for time synchronization?

  • RTC clocks can drift over time.

  • GPS system can be jammed.

    In comparison, a passive receiver system (i.e. our system) operating over a wide range of amateur radio frequencies may be a bit harder to jam.

  • Internet may NOT be available in remote areas.

  • Sundials can be cumbersome to deploy, calibrate, and perhaps not accurate enough ;)

Problem Statement: How do we ensure that we are still able to communicate over amateur bands using time-synchronized digital modes in absence of external and reliable references of time?

How?

Initially, we don't know the (relative) time. We try to decode FT8 traffic with a timing fudge factor of 0. If we don't succeed to decode any traffic, this fudge factor is incremented. This process is repeated until we are able to decode FT8 traffic successfully. The final value of the fudge factor gives us the (relative) time offset we need.

Hardware

We use Si4732-A10 IC for HF SSB reception. The Si5351 module provides a clock output to this Si4732-A10 IC. The other outputs of the Si5351 module can be used to implement a transmitter.

Thus the whole system is actually a low cost, portable, and efficient digital transceiver!

The whole system is beginner friendly, and can be built easily on a breadboard in under an hour or so.

The Si4732-A10 IC is fairly easy to solder on a SMD-To-DIP adapter PCB - no need to worry about it ;)

For a low-cost alternate option to Si4732-A10, checkout the CD2003 option included in this repository.

Tip: Use KiCad 7.x for handling these designs.

Update (September 2023): After on-air testing, we recommend building the CD2003-BoB-v2 design included in this repository over other designs for HF! The CD2003-S-BoB design works too but BFO frequency tuning seems like a hard, finicky process.

Update 2 (November 2023): Please use the CD2003-BoB-Final version. It has some minor correctness fixes in it.

Update 3 (March 2024): Please use the CD2003-BoB-Final-v2 version. It can be automatically assembled by JLCPCB!

Pinout

ATTENTION: The Si4732 IC uses 3.3v signaling! Don't attach it to a 5v MCU without a bi-directional level shifter.

For sample programs, see https://github.com/pu2clr/SI4735/tree/master/examples.

We include a fully-functional FT8 receiver firmware (for Raspberry Pi Pico) in this repository. It works on 20m (14.074 MHz) by default. To use this firmware, write firmware/run_ft8.uf2 to a Raspberry Pi Pico board.

text
#define CAL            15 // Automatic calibration entry
#define SDA_PIN        12 // GP12 on Pico
#define SCL_PIN        13 // GP13 on Pico
#define RESET_PIN      10 // GP10, Si4732 stuff

Si5351 module's CLK 0 goes to RX_OSC of Si4732. This has the 32.768 kHz clock on it.

Si5351 module's CLK 2 goes to GP15 (CAL) of Pico. This is used for automatic calibration of Si5351 module.

Audio output comes from L and R pins of the Si4732 BoB.

Pico's Pinout

Action!

Action 1

Credits

https://en.wikipedia.org/wiki/Standing_on_the_shoulders_of_giants

Prior Work

JTSync and JS8Call are capable of doing time synchronization but they are NOT portable enough and can't run on microcontrollers!

Future

We are also interested in automatic, microcontroller based (full) time synchronization systems powered by WWV and other time sources.

And of course, we will be using DT values from the decoded FT8 traffic to derive a more accurate fudge factor soon!

References

Parts

42
QtyValueFootprintReferences
8100nCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC2, C4, C5, C8, C9, C10, C12, C21
510uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1, C3, C6, C13, C14
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_PadH1, H2, H3, H4
210kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1, R2
21kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR13, Rin1
21uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC18, C19
2CD4148WSPCM_Diode_SMD_AKL:D_0805_2012MetricD7, D8
1 10uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC16
1100Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR14
1100kConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalGAIN1
1100uHInductor_SMD:L_1206_3216Metric_Pad1.22x1.90mm_HandSolderL2
110kConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalRV1
110nCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC17
11uHInductor_SMD:L_1206_3216Metric_Pad1.22x1.90mm_HandSolderL1
1680pCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC11
1CD2003GB_GPPackage_DIP:DIP-16_W7.62mm_SocketU1
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1Debug_AudioTestPoint:TestPoint_THTPad_2.0x2.0mm_Drill1.0mmTP1
1GNDTestPoint:TestPoint_THTPad_2.0x2.0mm_Drill1.0mmTP2
1MCP6002Package_DIP:DIP-8_W7.62mmU2
1Pin Headerfootprints:PinSocket_1x09_P2.54mm_Vertical_CustomJP1
1SMA Edge MountConnector_Coaxial:SMA_Samtec_SMA-J-P-X-ST-EM1_EdgeMountJ1
1SPEAKERfootprints:PJ-307_ModdedSPK1
1XC6206P332MR (662K)Package_TO_SOT_SMD:SOT-23_HandsolderingU4

Questions

How big is the BoB PCB?

It measures 60.5 × 36.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the BoB use?

42 parts, built around the MCP6002-I/P and CD4148WSP. 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 BoB KiCad files?

From the kholia/ConsensusBasedTimeSync repository on GitHub, at the commit this page was made from: the board is CD2003-BoB-Final-v4/BoB.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the BoB design in my own project?

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

More from kholia/ConsensusBasedTimeSync

12
  • 2 layers95.4 × 92.4 mmPanelized, the printed circuit board in 3D

    Panelized

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    326 parts7
  • 2 layers95.4 × 92.4 mmPanelized, the printed circuit board in 3D

    Panelized

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    272 parts7
  • 2 layers62.1 × 69.1 mmBoB, the printed circuit board in 3D

    BoB

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    48 parts7
  • 2 layers60.5 × 36.1 mmBoB, the printed circuit board in 3D

    BoB

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    46 parts7
  • 2 layers60.5 × 36.1 mmBoB, the printed circuit board in 3D

    BoB

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    45 parts7
  • 2 layers60.5 × 36.1 mmBoB, the printed circuit board in 3D

    BoB

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    42 parts7
  • 11 layers60.5 × 36.1 mmBoB v6, the printed circuit board in 3D

    BoB v6

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    41 parts7
  • 2 layers65 × 30 mmPHAT Frankenstein, the printed circuit board in 3D

    PHAT Frankenstein

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    35 parts7
  • 2 layers65 × 30 mmRPi pHat Thermocouple, the printed circuit board in 3D

    RPi pHat Thermocouple

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    24 parts7
  • 2 layers26.7 × 25 mmHF Pre Amp, the printed circuit board in 3D

    HF Pre Amp

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    19 parts7
  • 2 layers26.7 × 25 mmHF Pre Amp, the printed circuit board in 3D

    HF Pre Amp

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    19 parts7
  • 2 layers30.5 × 21.6 mmBoB, the printed circuit board in 3D

    BoB

    kholia/ConsensusBasedTimeSync

    A portable, efficient, passive, consensus based (relative) time synchronization mechanism over radio waves. Cost-effective radio receivers too!

    17 parts7

Similar boards

  • 4 layers234 × 84 mmMain panel, the printed circuit board in 3D

    Main panel

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    234 parts3kApache-2.0
  • 4 layers83.3 × 104.5 mmNIVARA, the printed circuit board in 3D

    NIVARA

    Camsu04/Camila_Fernandez_Electiva_2025_C2

    Desarrollo de proyectos de diseño mecatronico Electiva

    89 partsGPL-3.0
  • 2 layers124 × 112 mmOpenDropV3, the printed circuit board in 3D

    OpenDropV3

    GaudiLabs/OpenDrop

    Open Source Digital Microfluidics Bio Lab

    318 parts492GPL-3.0
  • 2 layers144 × 80 mmDVDLaserScanner, the printed circuit board in 3D

    DVDLaserScanner

    GaudiLabs/OpenLaserScanningMicroscope

    Open Source Laser Scanning Microscope

    83 parts345GPL-3.0
  • 2 layers50.8 × 107.9 mmAnalog rev3, the printed circuit board in 3D

    Analog rev3

    PaulStoffregen/O_C_T41

    Ornament and Crime Optimized With Teensy 4.1

    202 parts164
  • 4 layers60 × 95 mmSTM32H7 GuitarPedal, the printed circuit board in 3D

    STM32H7 GuitarPedal

    GuitarML/GuitarPedalSTM32

    Guitar pedal using a stm32h7 microcontroller programmed with CubeIDE (PCB and Firmware)

    101 parts100MIT
  • 2 layers72.4 × 91.4 mmPedal pi Robin, the printed circuit board in 3D

    Pedal pi Robin

    thawney/PedalPiV2

    Pedal Pi V2 by Thawney is an all new and regularly maintained Pedal-Pi by electrosmash; a lo-fi programmable guitar pedal that works with the Raspberry Pi ZERO Board.

    54 parts45GPL-3.0
  • 2 layers97 × 77.5 mmESPlant, the printed circuit board in 3D

    ESPlant

    CCHS-Melbourne/ESPlant

    Environmental Sensor Plant - solar WiFi gardening/meteorological sensor using ESP8266

    77 parts37