Skip to the content
PCBKitNew board
2 layers35.6 × 26.7 mmRS41 adapter, the printed circuit board in 3D

Vaisala RS41 radiosonde firmware written in Rust

Size
35.6 × 26.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
8
Nets
18
Pads
33
Tracks, vias
25, 1
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
20 Jan 2023
Updated
18 Mar 2026

Overview

RS41 adapter is an open-source printed circuit board by arnobert, from the arnobert/rs41_rust repository on GitHub, published under the BSD-2-Clause licence. It is a 2-layer board of 35.6 × 26.7 mm with 8 parts on 18 nets, routed with 25 tracks and 1 via.

Its parts include 5 resistors and 2 connectors. It belongs with the interfaces and adapters boards of this library.

README

README.md

rs41-rs

This repo contains a new approach to a firmware for the Vaisala RS41 radiosonde, written entirely in Rust.

:warning: 2024-05-03: Today I captured a RS41 with a new microcontroller: STM32L412. This repo is developed on the old revision (with STM32F100). Do not attempt to flash a new revision with this firmware! A new version might be on it's way some day.


Obtaining the sonde

The web contains lots of information about how to get and program a RS41. I am using a standard NXP LPC Link 2 with CMSIS-DAP firmware connected to the sonde with the adapter (see KiCad project in the hw folder). LPC-Link J2 must be closed.

Please unsolder and remove the antenna (steel wire next to the 10 pin connector) before first programming!

I have additionally mounted a SMA plug to connect to a SDR (LimeSDR) or analyzer, with a 10 dB pad between.


Sonde hardware

bazjo did an amazing job in reverse-engineering the RS41's PCB. Please read the documentation: https://github.com/bazjo/radiosonde_hardware/tree/master/Vaisala_RS41


Currently working features:

☑️ Flashing the sonde

☑️ RTIC running

☑️ LEDs indicating status:

  • Blinking red LED indicates missing GPS lock
  • Green LED indicates communication between STM32 and ublox

☑️ Power button and battery voltage (reading ADC)

☑️ Radio configuration:

  • frequency
  • tx power
  • modulation
  • GPIOs (heater)

☑️ Generating ubx messages

☑️ Sending ubx messages to u-blox GPS receiver and parsing responses

☑️ Transmitting data via (G)FSK and Hellschreiber mode

  • Coordinates and height
  • Callsign
  • UTC
  • GPS status

The (G)FSK mode also transmits

  • sequence number
  • CRC

You will find the (G)FSK receiver project here: https://codeberg.org/dl2ssb/rs41_rx-rs


Unlocking the flash:

I am running a stock Arch Linux. Other distros or even OSs have not been tested yet.

First terminal: open openocd

text
openocd -f interface/cmsis-dap.cfg -c "transport select swd"  -f target/stm32f1x.cfg

Second terminal: commands to openocd and unlock:

text
telnet 127.0.0.1 4444

> flash protect 0 0 15 off

For some sondes the command above did not work. You can try:

text
telnet 127.0.0.1 4444

> reset halt
> stm32f1x unlock 0

Building the firmware

text
$ git clone https://github.com/arnobert/rs41_rust
$ cd rs41_rust
$ cargo fetch
$ cargo build

With Hellschreiber mode:

text
$ cargo build --features "hell"

Flashing the sonde, GFSK/HELL:

text
$ cargo embed
$ cargo embed --features "hell"

Cargo embed auto-detects the LPC-Link. Other programmers might also work, but have not been tested.

Parts

8
QtyValueFootprintReferences
527Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R3, R4, R5
1Conn_01x03_SocketConnector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_3-G-5,08_1x03_P5.08mm_HorizontalJ3
1Conn_02x05_Odd_EvenConnector_JAE:JAE_LY20-10P-DT1_2x05_P2.00mm_VerticalSONDE
1Conn_ARM_JTAG_SWD_10Connector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_VerticalJ1

Questions

How big is the RS41 adapter PCB?

It measures 35.6 × 26.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the RS41 adapter use?

8 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 RS41 adapter KiCad files?

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

Can I use the RS41 adapter design in my own project?

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

Similar boards

  • 2 layers20.5 × 24.8 mmPi interface, the printed circuit board in 3D

    Pi interface

    opulo-inc/lumenpnp

    The LumenPnP is an open source pick and place machine.

    8 parts3.7k
  • 2 layers59.9 × 25.7 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

    8 parts1kGPL-3.0
  • 2 layers52 × 12.6 mmUSB, the printed circuit board in 3D

    USB

    shanteacontrols/OpenDeck

    A platform for building interactive control and sensing devices using MIDI and OSC built with Zephyr RTOS.

    8 parts960Apache-2.0
  • 2 layers87.5 × 48.5 mm7 input macropad, the printed circuit board in 3D

    7 input macropad

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    8 parts915
  • 2 layers36.2 × 63.1 mmPicoMemcard pico, the printed circuit board in 3D

    PicoMemcard pico

    dangiu/PicoMemcard

    Emulating PSX Memory Card (or controller) using a Raspberry Pi Pico

    8 parts694GPL-3.0
  • 2 layers36 × 10 mmPCB4-PWR BTN Rev.A, the printed circuit board in 3D

    PCB4-PWR BTN Rev.A

    OLIMEX/DIY-LAPTOP

    Do It Yourself Open Source Hardware and Software Modular Hacker's Friendly Laptop

    8 parts578Apache-2.0