Skip to the content
2 layers93 × 50 mmSsh bridge for raspberrypi, the printed circuit board in 3D

Ssh bridge for raspberrypi

hnz1102/ssh-serial-bridge3

Firmware for the ESP32-S3 that bridges an SSH connection (over Wi-Fi) to UART and USB CDC serial ports. Written in Rust (esp-idf-hal / esp-idf-svc) with a C component (wolfSSH) for the SSH server.

Size
93 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
37
Nets
59
Pads
196
Tracks, vias
307, 107
Pours
4
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
15 Apr 2026
Updated
26 Aug 2026

Overview

Ssh bridge for raspberrypi is an open-source printed circuit board by hnz1102, from the hnz1102/ssh-serial-bridge repository on GitHub. It is a 2-layer board of 93 × 50 mm with 37 parts on 59 nets, routed with 307 tracks and 107 vias.

It is built around the ESP32-S3-WROOM-1-N16R8, AZ1117CH-3.3TRG1-50 and TLP3555A(F, with the USB4105-GF-A, CUHS20F60,H3F and MH2029-601Y among its other parts. Its parts include 15 resistors, 6 connectors, 4 capacitors, 4 ICs and 3 diodes. It belongs with the interfaces and adapters and radio and wireless boards and the ESP32 boards of this library.

Main components

6

README

README.md

SSH Serial Bridge

ssh-serial-bridge - SSH-to-Serial Bridge for Raspberry Pi, USB CDC and UART

Firmware for the ESP32-S3 that bridges an SSH connection (over Wi-Fi) to UART and USB CDC serial ports. Written in Rust (esp-idf-hal / esp-idf-svc) with a C component (wolfSSH) for the SSH server.

Features

FeatureDescription
SSH serverPort 22, username/password authentication via wolfSSH, multiple concurrent sessions (including shared sessions on the same serial port)
Serial portsCOM1 / COM2 (UART) and USB CDC (USB Host) — up to 4 ports (usb0–usb3)
Web UIBrowser-based configuration, terminal, and GPIO control
WebSocket terminalBuilt-in xterm.js; access serial data from the browser at /terminal
WPS supportWi-Fi Protected Setup (PBC mode) — configure Wi-Fi via button or Web UI
GPIO / PWMDigital output (ON/OFF) on GPIO 4–9, 12 ; PWM output on GPIO 10–11
SPI displayOptional ST7789V (320×240) display showing incoming serial data
UDP SyslogRFC 5424 remote logging over UDP
NTPTime synchronisation on boot; up to 4 servers configurable via Web UI
NVS settingsPersistent configuration stored in NVS; editable via Web UI at runtime

Release History

v0.1.2

  • Fixed the OTA update completion message so it is displayed to the SSH client.
  • Fixed the Web UI terminal freezing while a serial target is booting.
  • Improved setup script compatibility across Linux distributions and made Xtensa toolchain setup more robust.
  • Split large USB CDC writes into multiple bulk transfers.
  • Fixed device reboot failures.
  • Fixed the custom partition table path used by the build.

Architecture

text
SSH client ──[TCP:22]──► ssh_bridge.c (wolfSSH)
                               │
        per-session ring buffers (PSRAM)
                               │
Rust usb_host.rs ◄─────────────┘
 ├── COM1 (UART1)
 ├── COM2 (UART2)
 └── USB CDC (USB Host: PL2303 / FTDI / etc.)

Browser ──[HTTP/WS]──► httpserver.rs
 ├── /terminal  (xterm.js + WebSocket /ws/serial)
 ├── /          (configuration page)
 └── /gpio      (GPIO/PWM control page)

Directory Layout

text
ssh-serial-bridge/
├── src/
│   ├── main.rs           # Entry point, peripheral initialisation
│   ├── usb_host.rs       # USB Host (PL2303 etc.) + UART + SSH bridge control
│   ├── httpserver.rs     # HTTP/WebSocket server, NVS config management
│   ├── wifi.rs           # Wi-Fi STA connection (DHCP / static IP)
│   ├── syslogger.rs      # UDP Syslog logger (RFC 5424)
│   ├── serial_display.rs # ST7789V SPI display rendering
│   ├── gpio_ctrl.rs      # Shared GPIO / PWM state
│   ├── btn_ctrl.rs       # GPIO0 button (short press: page cycle; long press: factory reset)
│   └── boot_log.rs       # NVS boot counter and rolling reset-reason log (last 10 entries)
├── components/
│   ├── ssh_bridge/       # SSH server C component (wolfSSH wrapper)
│   ├── wolfssh/          # wolfSSH (github.com/wolfSSL/wolfssh, commit 157cb01f)
│   └── wolfssl/          # wolfSSL/wolfCrypt (github.com/wolfSSL/wolfssl, commit b7e7e755)
├── static/               # Embedded static files (xterm.js / css / fit addon)
├── cfg.toml              # Build-time default configuration (gitignored — contains credentials)
├── cfg.toml.<board>      # Board-specific templates (e.g. ssh-bridge-board / xiao-esp32s3)
├── sdkconfig.defaults    # ESP-IDF build settings
├── partitions.csv        # Flash partition table
├── build-flash-images.sh # Build merged flash + app-only OTA images per board
├── setup_components.sh   # Initial setup script for components/
└── setup_env.sh          # One-shot environment setup (Rust, espup, udev)

Pin Assignment

UART Serial

PortSignalDefault GPIOXIAO-ESP32S3
COM1TX1743
COM1RX1844
COM2TX19 (41)—
COM2RX20 (42)—

GPIO / PWM Output

GPIOFunction
4–9, 12Digital output ON/OFF
10–11PWM output (LEDC, 1 kHz, 14-bit)

SPI Display (ST7789V)

SignalGPIO
SCLK48
MOSI45
CS40
DC39
RST38

Button

GPIOFunction
0 (BOOT)Short press (<3 s): Cycle display page / Medium press (3–10 s): Toggle DC OUT (GPIO12) / Long press (≥10 s): NVS factory reset
Factory Reset Display Indicators:
  • 6–10 seconds (button held): Display shows "FACTORY RESET" with countdown "Resetting to defaults in X seconds..."
  • 10 seconds (trigger): Display shows "FACTORY RESET" / "Erasing NVS... Please wait..." and device reboots

Configuration

Board-specific cfg.toml (build-time defaults)

Before building, choose a board config and copy it to cfg.toml.

  • ssh-bridge-board: Board with a 2.0-inch TFT display for serial data output
  • mini-ssh-bridge-board: Small-display board using SSD1306
  • xiao-esp32s3: XIAO ESP32S3 board
bash
# 2.0-inch TFT display board
cp cfg.toml.ssh-bridge-board cfg.toml

# SSD1306 mini display board
cp cfg.toml.mini-ssh-bridge-board cfg.toml

# XIAO ESP32S3 board
cp cfg.toml.xiao-esp32s3 cfg.toml

After copying, edit cfg.toml for your environment (Wi-Fi credentials, IP, etc.) if needed.

toml
[ssh-serial-bridge]
wifi_ssid      = "your-ssid"
wifi_psk       = "your-password"
ip_mode        = "dhcp"           # "dhcp" or "static"
ip_address     = "192.168.2.200"
subnet_mask    = "255.255.255.0"
gateway        = "192.168.2.1"
dns            = "1.1.1.1"

syslog_server    = "192.168.2.140:514"
syslog_enable    = "false"
syslog_host_name = "esp32s3"
syslog_app_name  = "ssh-bridge"

ssh_user     = "admin"
ssh_password = "sshpass"

com1_tx_pin = "17"    # XIAO-ESP32S3: 43
com1_rx_pin = "18"    # XIAO-ESP32S3: 44
com1_baud   = "115200"
com2_tx_pin = "41"
com2_rx_pin = "42"
com2_baud   = "115200"

Values in cfg.toml are compiled into the firmware as defaults.
After boot they can be overridden via the Web UI or direct NVS writes; NVS values take priority.


Wi-Fi Setup with WPS

WPS (Wi-Fi Protected Setup) allows you to connect to a Wi-Fi network without manually entering the SSID and password. This device supports WPS Push Button Configuration (PBC) mode.

Method 1: Using cfg.toml and Factory Reset (Recommended for initial setup)

If you don't have Wi-Fi credentials yet or want to reconfigure via WPS without Web UI access:

  1. Edit cfg.toml before building (or rebuild the firmware):

    toml
    wifi_ssid      = ""           # Set to empty string
    wps_enable     = "true"       # Enable WPS mode on boot
  2. Flash the firmware to the device

  3. On boot, the device will automatically enter WPS mode and wait for you to press the WPS button on your Wi-Fi router (timeout: 2 minutes)

  4. Upon successful WPS connection, the credentials are saved to NVS and the device reboots

Alternative: Trigger WPS via Factory Reset

If the device is already running with Wi-Fi configured but you want to switch to WPS:

  1. Edit cfg.toml to set wps_enable = "true" and wifi_ssid = ""
  2. Rebuild and flash the firmware
  3. Perform a Factory Reset: Press and hold the BOOT button (GPIO 0) for ≥10 seconds
  4. The device will erase NVS, restore cfg.toml defaults, and reboot into WPS mode
  5. Press the WPS button on your Wi-Fi router within 2 minutes

Note: Web UI is not accessible until Wi-Fi is connected, so this method is essential for initial setup or when you lose Wi-Fi access.


Method 2: Using the Web UI (when already connected to Wi-Fi)

  1. Navigate to the configuration page at http://<device_ip>/
  2. Find the WPS section
  3. Click the "Start WPS" button
  4. Press the WPS button on your Wi-Fi router within 2 minutes
  5. The device will automatically receive and save the Wi-Fi credentials and reboot

WPS Status Indicators

When WPS is active:

  • Display (if enabled): Shows "WPS MODE" with countdown timer (120 seconds)
    • "Press WPS button on your router within 120 seconds"
    • Countdown updates every 10 seconds
    • On success: "WPS SUCCESS" → "Connecting to {SSID}" → "CONNECTED"
  • Syslog (if enabled): Logs WPS start, success, or failure events
  • Web UI: Shows WPS status during the connection process

WPS Fallback

If WPS fails or times out, the device will revert to the previously configured Wi-Fi credentials (from cfg.toml or NVS).

Notes

  • WPS PBC mode is the only supported WPS method (PIN mode is not supported)
  • After successful WPS configuration, the new credentials are saved to NVS and persist across reboots
  • You can still manually configure Wi-Fi credentials via cfg.toml or the Web UI if WPS is not available on your router

Environment Setup

Run setup_env.sh once on a fresh Ubuntu / Debian machine (or WSL2) before building. The script performs all steps below automatically.

bash
bash setup_env.sh

After the script finishes, open a new terminal (or reload your shell config) so the environment variables take effect:

bash
source "$HOME/.cargo/env"
source ~/export-esp.sh

What the script does

StepAction
1Install system packages via apt
2Install Rust toolchain via rustup (skipped if already present)
3Install ldproxy, espup, cargo-espflash via Cargo
4Install & update the ESP32-S3 Xtensa toolchain via espup
5Source ~/export-esp.sh (generated by espup)
6Add udev rule for ESP32 USB device (303a:1001) and reload rules

If you prefer to run the steps manually, expand each step below.

Manual setup steps
bash
# 1. System packages
sudo apt update && sudo apt -y install \
    git python3 python3-pip gcc build-essential curl \
    pkg-config libudev-dev libtinfo5 clang libclang-dev \
    llvm-dev udev libssl-dev python3.10-venv

# 2. Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Select option 1 (default install), then:
source "$HOME/.cargo/env"

# 3. Cargo tools
cargo install ldproxy
cargo install espup
cargo install cargo-espflash

# 4. ESP32-S3 toolchain
espup install
espup update

# 5. Activate ESP environment (add to ~/.bashrc / ~/.zshrc for persistence)
. ~/export-esp.sh

# 6. udev rules

Build and Flash

Prerequisites

  • Rust toolchain: esp channel (selected automatically via rust-toolchain.toml)
  • espup — ESP32-S3 Xtensa toolchain
  • espflash

Initial component setup

Run once after cloning, or after a clean wipe of components/:

bash
cd esp32-s3/ssh-serial-bridge
bash setup_components.sh

This clones wolfssh and wolfssl at the verified commits and places the ESP-IDF-specific CMakeLists.txt and include/user_settings.h on top.

Build

bash
cargo build --release

Flash and monitor

bash
espflash flash --release --monitor

Creating a complete flash binary image

To create a single binary file that includes all partitions (bootloader, partition table, data partitions, and the currently built app image) for distribution or web-based flashing:

bash
cargo espflash save-image --release --merge --chip esp32s3 complete_flash.bin

This creates a complete 8 MB flash image starting from offset 0x0.

Creating board images for both USB flashing and OTA

The helper script builds all board configs and produces both image types:

  • flash_images/flash_<board>.bin (merged full-flash image, write at 0x0)
  • flash_images/app_<board>.bin (app-only image for ssh ... update OTA)
bash
bash build-flash-images.sh

Important: When flashing this image, always write it to offset 0x0, not 0x9000. Writing to 0x9000 will result in a boot failure with "invalid header: 0xffffffff" error.

Flash the complete binary
bash
# Using esptool.py
esptool.py --chip esp32s3 --port /dev/ttyUSB0 write_flash 0x0 complete_flash.bin

# Using espflash
espflash write-bin 0x0 complete_flash.bin
Web-based flashing (no command line required)

You can also flash the binary via a web browser using the ESP Web Flasher:

  1. Open https://thelastoutpostworkshop.github.io/ESPConnect/ in Chrome, Edge, or Opera (Web Serial API required)
  2. Click "Connect" and select your ESP32-S3 device from the serial port list
  3. Click "Choose File" and select complete_flash.bin
  4. Set the flash address to 0x0 (very important!)
  5. Click "Program" to start flashing
  6. Wait for the process to complete and click "Reset Device"

This method is ideal for:

  • Users without command-line tools installed
  • Quick firmware updates without installing the Rust/ESP toolchain
  • Distribution of pre-built binaries

Flash layout

PartitionOffsetSize
nvs0x900024 KB
otadata0xF0008 KB
phy_init0x110004 KB
ota_0 (app)0x200004032 KB
ota_1 (app)0x4100004032 KB

Flash: 8 MB, DIO mode, 40 MHz.


Web UI Endpoints

Web UI Snapshots

Web UI main configuration page Web UI terminal page Web UI GPIO control page
URLMethodDescription
/loginGET / POSTLogin
/logoutGETLogout
/GETConfiguration page (auth required)
/gpioGETGPIO / PWM control page (auth required)
/terminalGETWebSocket serial terminal (auth required)
/ws/serialWSBidirectional serial bridge
/api/configPOSTSave configuration to NVS
/api/statusGETDevice / Wi-Fi / USB status (JSON)
/api/resetPOSTErase NVS and restore cfg.toml defaults
/api/rebootPOSTReboot the device
/api/gpioPOSTSet one digital output ON/OFF
/api/pwmPOSTSet PWM duty cycle (0–100 %)
/api/gpio_stateGETCurrent GPIO / PWM state (JSON)
/api/boot_logGETBoot history with reset reasons from NVS (JSON)

SSH Connection

Authentication

ItemDetail
Port22 (TCP)
Auth methodPassword only (public-key authentication is not supported)
UsernameAny string is accepted — only the password is checked
PasswordSet via ssh_password in cfg.toml or Web UI (default: esp32)
Concurrent sessionsUp to 6 total SSH sessions (including command sessions)
Per-device console sharingUp to 4 concurrent console sessions on the same target (usb0-usb3, com1, com2)

Security note: Change the default password before deploying the device on a shared network.


Commands

The SSH server dispatches on the command passed after the host.
If no command is given, a usage summary is printed and the connection closes.

1. Serial console bridge

Connects the SSH session as a transparent terminal to a serial port.

bash
ssh -tt <user>@<device_ip> console (usb0|usb1|usb2|usb3|com1|com2)
ArgumentDescription
usb0First USB CDC device (plug order; alias: usb)
usb1Second USB CDC device
usb2Third USB CDC device
usb3Fourth USB CDC device
com1UART1 (pins configured by com1_tx_pin / com1_rx_pin)
com2UART2 (pins configured by com2_tx_pin / com2_rx_pin)
  • The -tt flag forces pseudo-TTY allocation, which is required for correct terminal behaviour.
  • A welcome banner is printed on connect:
    text
    Connected to ESP32-S3 SSH-Serial-Bridge v0.1.1 [com1].
    Disconnect: Enter then ~.
  • The same serial target can be shared by multiple SSH clients. When another session is already connected to that target, the banner also shows:
    text
    Note: N other session(s) are also connected to this device — input/output is shared.
  • Shared-session behaviour on the same target:
    • RX from device is broadcast to all connected SSH sessions on that target.
    • TX from each SSH session is sent to the same physical serial line, so input from multiple users can interleave.
  • Capacity limits:
    • Max 4 console sessions per target (com1, com2, usb0-usb3).
    • Max 6 total SSH sessions across the system.
  • If a target already has 4 console sessions, new attempts are rejected with:
    text
    Error: too many sessions already connected to this device (max 4).
  • Serial data received before the first keystroke from the SSH client is discarded to prevent stale output flooding the terminal on login.
  • Disconnect with the standard OpenSSH escape sequence: press Enter, then type ~.

Examples:

bash
# Connect to the first USB CDC device
ssh -tt admin@192.168.2.200 console usb0

# Connect to the second USB CDC device
ssh -tt admin@192.168.2.200 console usb1

# Connect to COM1 (UART1)
ssh -tt admin@192.168.2.200 console com1

# Connect to COM2 (UART2)
ssh -tt admin@192.168.2.200 console com2

2. GPIO digital output control

Controls GPIO4–GPIO9 output pins (mapped as power outlets 1–6).

bash
ssh <user>@<device_ip> power <1-6> (on|off)
ArgumentDescription
1–6Outlet number: 1 = GPIO4, 2 = GPIO5, … 6 = GPIO9
onSet output HIGH
offSet output LOW

Examples:

bash
ssh admin@192.168.2.200 power 1 on    # GPIO4 → HIGH
ssh admin@192.168.2.200 power 3 off   # GPIO6 → LOW

3. DC Power output control (GPIO12)

Controls the dedicated DC Power output on GPIO12.

bash
ssh <user>@<device_ip> dcpower (on|off)

Examples:

bash
ssh admin@192.168.2.200 dcpower on
ssh admin@192.168.2.200 dcpower off

4. DC Power power-cycle (GPIO12)

Turns the DC Power output off, waits briefly, then turns it back on — in a single SSH call.

bash
ssh <user>@<device_ip> powercycle

Example:

bash
ssh admin@192.168.2.200 powercycle

5. PWM duty cycle control

Sets the PWM duty cycle on GPIO10 or GPIO11 (LEDC, 1 kHz, 14-bit).

bash
ssh <user>@<device_ip> pwm <1|2> <0-100>
ArgumentDescription
1Channel 1 — GPIO10
2Channel 2 — GPIO11
0–100Duty cycle in percent

Examples:

bash
ssh admin@192.168.2.200 pwm 1 50    # GPIO10 → 50 %
ssh admin@192.168.2.200 pwm 2 0     # GPIO11 → off
ssh admin@192.168.2.200 pwm 1 100   # GPIO10 → full on

6. Reboot the device

Reboots the ESP32-S3 (equivalent to a power-on reset).

bash
ssh <user>@<device_ip> reboot

Example:

bash
ssh admin@192.168.2.200 reboot

7. OTA firmware update

Streams a new app image over SSH directly into the inactive OTA partition, then reboots into it. No filesystem, SCP, or SFTP support is required — the exec channel's stdin is piped straight into flash.

bash
ssh <user>@<device_ip> update < firmware.bin

Example:

bash
cat flash_images/app_ssh-bridge-board.bin | ssh admin@192.168.2.200 update

Important:

  • Use the app-only image (flash_images/app_<board>.bin, produced by build-flash-images.sh), not the merged full-flash image (flash_images/flash_<board>.bin). The merged image includes the bootloader and partition table baked in at offset 0 and will corrupt the OTA partition if written this way.
  • The device has two OTA app slots (ota_0/ota_1). The update is written to whichever slot isn't currently running, so the previous firmware is left untouched until the new image is fully received and verified.
  • Rollback safety: the new image boots in a "pending verify" state. Once the SSH bridge starts successfully it is marked valid automatically. If the new firmware crashes or fails to boot before that point, the bootloader automatically reverts to the previous working firmware on the next reset.
  • This requires the partition table to include ota_0/ota_1/otadata (see partitions.csv). Boards flashed with an older single-partition image must be reflashed once via USB/serial (cargo espflash flash or the merged flash_<board>.bin image) before OTA updates over SSH will work.

Usage summary (printed on unknown command)

text
ESP32-S3 SSH-Serial-Bridge
Usage:
  ssh -tt admin@host console (usb0|usb1|usb2|usb3|com1|com2)  -- Serial console bridge
  ssh    admin@host power   (1-6) (on|off)    -- GPIO4-9 output control
  ssh    admin@host dcpower (on|off)          -- DC Power output (GPIO12)
  ssh    admin@host powercycle                -- DC Power off->on (GPIO12)
  ssh    admin@host pwm   (1|2) (0-100)       -- PWM GPIO10-11 duty %
  ssh    admin@host reboot                    -- Reboot the ESP32-S3
  ssh    admin@host update < firmware.bin      -- OTA firmware update

Supported USB CDC Devices

The USB Host driver auto-detects the connected adapter by VID/PID and applies the appropriate initialisation sequence. The baud rate is set by cdc_baud in cfg.toml (default: 115200).

Note: cdc_enable must be set to "true" in cfg.toml (or via Web UI) to activate the USB Host driver. When disabled, usb0–usb3 are unavailable as SSH console targets.

Vendor-class adapters

ChipVIDPID(s)PortsNotes
PL2303067B2303, 23A3, 23041Prolific Technology
CP210x10C4EA60, EA61, EA701Silicon Labs
FT232R040360011FTDI
FT232H040360141FTDI
FT2232H/D040360102FTDI — maps to usb0 / usb1
FT4232H040360114FTDI — maps to usb0–usb3

Linux USB Gadget (Raspberry Pi)

This firmware supports Raspberry Pi USB Gadget mode for direct serial access over USB:

DeviceVIDPIDModuleNotes
Raspberry Pi (g_cdc)0525a4a7g_cdcCDC-ACM composite device (recommended)
Raspberry Pi Configuration

To use your Raspberry Pi as a USB serial gadget with this ESP32-S3 bridge:

  1. Enable USB gadget mode on your Raspberry Pi:

    bash
    # Add to /boot/config.txt (or /boot/firmware/config.txt on Ubuntu)
    dtoverlay=dwc2
  2. Load the g_cdc module (recommended over g_serial):

    Method A: Using cmdline.txt (Recommended)

    bash
    # Edit /boot/cmdline.txt (or /boot/firmware/cmdline.txt on Ubuntu)
    # Add modules-load=dwc2,g_cdc to the kernel command line
    # Example:
    console=serial0,115200 ... modules-load=dwc2,g_cdc ...

    Method B: Using /etc/modules

    bash
    # Add to /etc/modules
    dwc2
    g_cdc
  3. Enable serial-getty service (required for the CDC device to respond):

    bash
    sudo systemctl enable serial-getty@ttyGS0
    sudo systemctl start serial-getty@ttyGS0
  4. Reboot your Raspberry Pi:

    bash
    sudo reboot
  5. Connect the Pi to the ESP32-S3 USB port using a USB cable

Important: Use g_cdc instead of g_serial. The g_serial module has compatibility issues with the ESP-IDF USB Host stack and may not work reliably. g_cdc provides better standards compliance and works seamlessly with this firmware.

After configuration, the Pi will appear as a CDC-ACM device and you can access its serial console via SSH to the ESP32-S3 bridge (target: usb0).

Port mapping

Multi-port FTDI adapters expose multiple ports, mapped to SSH console targets in channel order:

SSH targetDescription
usb0Port 1 — all single-port adapters; FT2232 ch.A; FT4232 ch.A
usb1Port 2 — FT2232 ch.B; FT4232 ch.B
usb2Port 3 — FT4232 ch.C
usb3Port 4 — FT4232 ch.D

Dependencies

Component / LibraryVersionLicensePurpose
ssh-serial-bridge (this project)0.1.1MITFirmware (Rust)
ssh_bridge component0.1.1MITSSH server C wrapper
esp-idf-hal0.45.2MIT / Apache-2.0ESP32-S3 hardware abstraction
esp-idf-svc0.51MIT / Apache-2.0Wi-Fi, HTTP server, SNTP, etc.
wolfSSHcommit 157cb01fGPLv3 (or commercial)SSH server protocol
wolfSSL / wolfCryptcommit b7e7e755GPLv3 (or commercial)Cryptography library
mipidsi0.8.0MITST7789V display driver
embedded-graphics0.8.1MITDisplay rendering
@xterm/xterm6.0.0 (bundled)MITBrowser WebSocket terminal
@xterm/addon-fit0.11.0 (bundled)MITxterm.js terminal fit addon

Note on wolfSSH / wolfSSL licensing:
Both wolfSSH and wolfSSL are dual-licensed under GPLv3 (open source) or a commercial license (for use in proprietary products).

Parts

37
QtyValueFootprintReferences
30.1uFCapacitor_SMD:C_0603_1608MetricC101, C201, C202
210KResistor_SMD:R_0603_1608MetricR201, R202
24.7K 1%Resistor_SMD:R_0603_1608MetricR103, R206
247K 1%Resistor_SMD:R_0603_1608MetricR102, R204
251KResistor_SMD:R_0603_1608MetricR110, R111
25K1Resistor_SMD:R_0603_1608MetricR106, R107
275KResistor_SMD:R_0603_1608MetricR104, R109
2USB4105-GF-ALibrary:USB_C_5077CR-16-SMC2-BK-TRJ101, J102
11Library:SW_SKRPACE010_4mm_3mmSW304
110uFCapacitor_SMD:C_0805_2012MetricC203
1150Resistor_SMD:R_0603_1608MetricR101
11KResistor_SMD:R_0603_1608MetricR108
1330Resistor_SMD:R_0603_1608MetricR105
13V3TestPoint:TestPoint_Pad_D1.0mmTP101
1AZ1117-CH3.3TRG1Package_TO_SOT_SMD:SOT-223-3_TabPin2U103
1CUHS20F60Diode_SMD:D_PowerDI-123D101
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1Conn_01x10Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_VerticalJ2
1Conn_02x05_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ104
1ESP32-S3-WROOM-1-N16R8Library:ESP32-S3-WROOM-1_EXPU201
1GNDTestPoint:TestPoint_Pad_D1.0mmTP102
1LED BLUELED_SMD:LED_0603_1608MetricD402
1LED REDLED_SMD:LED_0603_1608MetricD103
1MH2029-601YInductor_SMD:L_0805_2012MetricFB101
1ST7789V_TFT_DISPLAY_8PLibrary:ST7789V TFT SPI DISPLAY 320x240 GMT020-02-8PU101
1TLP3555APackage_DIP:DIP-4_W7.62mmU102
1USB_ALibrary:USB_A_5075AR-04J105
1VBUS_OUTTestPoint:TestPoint_Pad_D1.0mmTP103

More from hnz1102/ssh-serial-bridge

1
  • 2 layers32 × 45 mmMin ssh serial bridge, the printed circuit board in 3D

    Min ssh serial bridge

    hnz1102/ssh-serial-bridge

    Firmware for the ESP32-S3 that bridges an SSH connection (over Wi-Fi) to UART and USB CDC serial ports. Written in Rust (esp-idf-hal / esp-idf-svc) with a C component (wolfSSH) for the SSH server.

    20 parts3

Similar boards

  • 2 layers185 × 98 mmMosfetload, the printed circuit board in 3D

    Mosfetload

    hnz1102/electricload

    Electric Load and Logger

    96 parts5
  • 2 layers122.2 × 122.8 mmDcpower, the printed circuit board in 3D

    Dcpower

    hnz1102/dcpower

    DC Power Unit for Breadboard based on ESP32-S3 microcontroller and AP33772S USB Power Delivery (PD) Sink Controller.

    115 parts1
  • 2 layers139 × 64 mmEEW display, the printed circuit board in 3D

    EEW display

    hnz1102/EEW-display

    ESP32-S3 firmware for a small earthquake-information display. It shows recent earthquakes and emergency earthquake warnings (緊急地震速報, EEW) from [P2P地震情報](https://www.p2pquake.net/), draws the epicenters on a Google map…

    47 parts
  • 2 layers68.2 × 67.1 mmIcart power supply, the printed circuit board in 3D

    Icart power supply

    ShunjiHashimoto/icart-power-supply

    icart用の電源基板の設計データ

    48 parts
  • 2 layers30 × 43 mmCurrentmeter, the printed circuit board in 3D

    Currentmeter

    hnz1102/mini-current-meter

    Mini Current Meter using INA228A ultra-precise digital power monitor

    40 parts10
  • 2 layers40 × 60 mmWakepc, the printed circuit board in 3D

    Wakepc

    hnz1102/wakepcbox

    Wake on LAN Controller Box

    45 parts4

Questions

How big is the Ssh bridge for raspberrypi PCB?

It measures 93 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ssh bridge for raspberrypi use?

37 parts, built around the ESP32-S3-WROOM-1-N16R8, AZ1117CH-3.3TRG1-50, TLP3555A(F and USB4105-GF-A. 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 Ssh bridge for raspberrypi KiCad files?

From the hnz1102/ssh-serial-bridge repository on GitHub, at the commit this page was made from: the board is hw/ssh-bridge-for-raspberrypi.kicad_pcb and its schematic hw/mini-ssh-serial-bridge/min-ssh-serial-bridge.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ssh bridge for raspberrypi design in my own project?

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