Skip to the content
PCBKitNew board
4 layers26 × 32.5 mmUSBnet, the printed circuit board in 3D

USBnet: Internet via USB (and HID!)

Size
26 × 32.5 mm
Copper layers
4
Thickness
1.6 mm
Parts
53
Nets
88
Pads
236
Tracks, vias
243, 49
Pours
4
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
16 Oct 2026
Updated
20 Oct 2026

Overview

USBnet is an open-source printed circuit board by Ismael034, from the Ismael034/USBnet repository on GitHub, published under the MIT licence. It is a 4-layer board of 26 × 32.5 mm with 53 parts on 88 nets, routed with 243 tracks and 49 vias.

It is built around the CH32V467WEU6, KH-TYPE-C-16P and TPS2121RUXR, with the TS-1088-AR02016, NCD0603R1 and USBLC6-2P6 among its other parts. Its parts include 15 capacitors, 14 resistors, 7 diodes, 5 ICs and 1 crystal. It belongs with the RISC-V boards of this library.

Main components

11

README

README.md

USBnet

USBnet tunnels TCP connections between two computers over a single CH32V467WEU6 board. Plug the board into both computers with USB. The client exposes a local HTTP proxy and the server opens upstream TCP connections to the open internet.

USBnet hardware

Why?

So... Did you notice that some computers have strict policies to avoid connecting USB devices except allowed ones such as keyboards and mice? What if we take advantage of the HID protocol inside these devices to send network packets? A translator would be required (the client and the server) but it is technically possible... Introducing... USBnet! Networking via USB (even if the USB device emulates a mouse) :D

Host tool

sh
uv sync --project usbnet
uv run --project usbnet usbnet --server   # on the server computer
uv run --project usbnet usbnet --client   # on the client computer

Point the client computer's proxy at 127.0.0.1:8080.

Modes

The client port can work in two ways. You pick one with --config (--mode relay or --mode custom), and --client figures out which one is active on its own.

  • Relay (relay): the default. The board shows up as a USBnet device with a bulk endpoint. Fastest option.
  • Emulated (custom): the board pretends to be another device, like a mouse or keyboard you cloned. The computer only sees that device, and the tunnel goes through a hidden HID feature report. Slower, but it blends in.

Configuration

Hold the USER button while resetting to enter configuration mode. A USB interface should then appear as USBnet Configuration (1a86:fe53). Use --config to edit the profile stored in flash:

sh
uv run --project usbnet usbnet --config list            # board and HID devices available to clone
uv run --project usbnet usbnet --config get             # print the stored profile
uv run --project usbnet usbnet --config clone 0 --preset mouse
uv run --project usbnet usbnet --config set --mode custom --preset keyboard
uv run --project usbnet usbnet --config set --defaults --yes

Speed

Rough numbers from my tests. Yours may vary.

ModeDownloadUploadPing (idle / loaded)
Relay~90 Mbps~88 Mbps3 / 4 ms
Emulated~25 Mbps~21 Mbps29 / 33 ms

Relay is measured over a local link, so it's mostly the tunnel itself. Emulated is over the internet (speedtest.net), so it includes the line.

Building

Download WCH's RISC-V toolchain from MounRiver and put it under toolchain/riscv32-wch-elf-gcc15, or point TOOLCHAIN_DIR at another install.

sh
make -C ch32v467
make -C ch32v467 test

Tests

make -C ch32v467 test builds a hardware-test image. On reset it lights LED1–LED4 in order, then holds them on. Each LED maps to a function:

PartCH32V467 pinMeaning
LED1PA9Firmware heartbeat
LED2PA8USB1 enumerated
LED3PB10USB2 enumerated
LED4PB11USER pressed

All four LEDs blinking together indicate firmware initialization failure.

Flashing

Hold BOOT0 (PE12) while resetting, then flash with WCHISPTool_CMD v4.0:

sh
WCHISPTool_CMD -p 0x00130000 -c ch32v467/CH32V467WEU6-isp.ini -o program -f ch32v467/build/ch32v467.bin
WCHISPTool_CMD -p 0x00130000 -c ch32v467/CH32V467WEU6-isp.ini -o verify -f ch32v467/build/ch32v467.bin

The board stays in the bootloader after flashing, so reset it (or replug) to start the new firmware.

Parts

53
QtyValueFootprintReferences
8100nFCapacitor_SMD:C_0402_1005MetricC5, C6, C8, C10, C11, C12, C13, C14
610kΩResistor_SMD:R_0402_1005MetricR1, R6, R7, R10, R13, R14
6TestPoint_SmallTestPoint:TestPoint_Pad_D1.0mmSWCLK_TP3, SWDIO_TP4, SWDIO_TP5, SWDIO_TP6, USART_RX_TP2, USART_TX_TP1
45.1kΩResistor_SMD:R_0402_1005MetricR2, R3, R4, R5
3TS-1088-AR02016lcsc_footprints:C720477_SW-SMD_L3_9-W3_0-P4_45BOOT0, RESET1, USER1
210uFCapacitor_SMD:C_0402_1005MetricC1, C2
22.2uFCapacitor_SMD:C_0402_1005MetricC9, C15
230pFCapacitor_SMD:C_0402_1005MetricC3, C4
242.2kΩResistor_SMD:R_0402_1005MetricR11, R12
2KH-TYPE-C-16Plcsc_footprints:C709357_USB-C-SMD_KH-TYPE-C-16PU2, U3
2NCD0603R1LED_SMD:LED_0603_1608MetricLED4, PWR1
2USBLC6-2P6lcsc_footprints:C2827693_SOT-666-6_L1_6-W1_2-P0_50-LS1_6-BLD1, D2
2XL-1608UYC-06LED_SMD:LED_0603_1608MetricLED1, LED2
11kΩResistor_SMD:R_0402_1005MetricR9
125.5kΩResistor_SMD:R_0402_1005MetricR8
14.7uFCapacitor_SMD:C_0402_1005MetricC7
1CH32V467WEU6lcsc_footprints:C55778389_QFN-68_L8_0-W8_0-P0_40-TL-EP5_5U5
1JK-SMD0805-020-30VFuse:Fuse_0805_2012MetricF1
1LP5907SNX-3.3/NOPBlcsc_footprints:C133572_ZQFN-4L_L1_0-W1_0-P0_63-BL-EPU1
1TPS2121RUXRlcsc_footprints:C485916_VQFN-HR-12_L2_5-W2_0-P0_50-BLU4
1XC32M4-25.000-F20NJDTlcsc_footprints:C2842189_CRYSTAL-SMD_4P-L3_2-W2_5-BLX2
1XL-1608UGC-04LED_SMD:LED_0603_1608MetricLED3
1YC124-JR-071KLlcsc_footprints:C326869_RES-ARRAY-SMD_0804-8P-L2_0-W1_0-BLRN1

Questions

How big is the USBnet PCB?

It measures 26 × 32.5 mm and has 4 copper layers, 1.6 mm thick.

What parts does the USBnet use?

53 parts, built around the CH32V467WEU6, KH-TYPE-C-16P, TPS2121RUXR and TS-1088-AR02016. 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 USBnet KiCad files?

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

Can I use the USBnet design in my own project?

Its repository publishes it under the MIT 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

  • 4 layers76.1 × 70.7 mmUsb sp dev, the printed circuit board in 3D

    Usb sp dev

    Ismael034/usbsp

    Have you ever tried to plug a USB device into a computer that has USB restrictions enabled? It's frustrating, isn't it? You can't use your USB devices, and you have no way to bypass the restrictions.

    79 parts2MIT
  • 4 layers27.7 × 59.7 mmCh32v203-dev, the printed circuit board in 3D

    Ch32v203-dev

    Ismael034/ch32v203-dev

    Just another CH32V203 development board

    36 parts1
  • 2 layers101.4 × 69.4 mmPanel, the printed circuit board in 3D

    Panel

    4project-co-il/PlugAndPlay-SAMD21

    Plug-n-Play SAMD21 Development Board

    85 partsMIT
  • 2 layers97.8 × 81.3 mmTR4org ROM, the printed circuit board in 3D

    TR4org ROM

    nanamitm/TR4org-ROM

    Standalone KiCad 10 project for the external ROM board used with the TR4org TD4 4-bit CPU reproduction. The schematic implements a jumper-programmed 16 x 8 diode-matrix ROM.

    221 parts
  • 4 layers49.1 × 54.3 mmRp2350-hdmi hexpansion, the printed circuit board in 3D

    Rp2350-hdmi hexpansion

    Corteil/rp2350-hdmi-hexpansion

    RP2350 HDMI hexpansion for the EMF Tildagon badge -- mirrors the badge's display to a monitor over HSTX/DVI

    57 parts2
  • 4 layers50 × 50 mmMCU Board 0.1, the printed circuit board in 3D

    MCU Board 0.1

    thejamesrhodes/Hyades-Flight-Computer

    Full Hardware and Electronics design, Bare-metal GNC flight software for an actively attitude-controlled high-power rocket

    80 parts1Apache-2.0
  • 4 layers78.3 × 42.7 mmIMU Array ICM-42688-P, the printed circuit board in 3D

    IMU Array ICM-42688-P

    thejamesrhodes/IMU-Quantisation-research-project

    Research into quantisation effects in MEMS gyroscopes using custom STM32 hardware.

    87 parts1MIT