
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.

USBnet: Internet via USB (and HID!)
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.
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.
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
uv sync --project usbnet
uv run --project usbnet usbnet --server # on the server computer
uv run --project usbnet usbnet --client # on the client computerPoint the client computer's proxy at 127.0.0.1:8080.
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): the default. The board shows up as a USBnet device with a bulk endpoint. Fastest option.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.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:
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 --yesRough numbers from my tests. Yours may vary.
| Mode | Download | Upload | Ping (idle / loaded) |
|---|---|---|---|
| Relay | ~90 Mbps | ~88 Mbps | 3 / 4 ms |
| Emulated | ~25 Mbps | ~21 Mbps | 29 / 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.
Download WCH's RISC-V toolchain from MounRiver and put it under toolchain/riscv32-wch-elf-gcc15, or point TOOLCHAIN_DIR at another install.
make -C ch32v467
make -C ch32v467 testmake -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:
| Part | CH32V467 pin | Meaning |
|---|---|---|
| LED1 | PA9 | Firmware heartbeat |
| LED2 | PA8 | USB1 enumerated |
| LED3 | PB10 | USB2 enumerated |
| LED4 | PB11 | USER pressed |
All four LEDs blinking together indicate firmware initialization failure.
Hold BOOT0 (PE12) while resetting, then flash with WCHISPTool_CMD v4.0:
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.binThe board stays in the bootloader after flashing, so reset it (or replug) to start the new firmware.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100nF | Capacitor_SMD:C_0402_1005Metric | C5, C6, C8, C10, C11, C12, C13, C14 |
| 6 | 10kΩ | Resistor_SMD:R_0402_1005Metric | R1, R6, R7, R10, R13, R14 |
| 6 | TestPoint_Small | TestPoint:TestPoint_Pad_D1.0mm | SWCLK_TP3, SWDIO_TP4, SWDIO_TP5, SWDIO_TP6, USART_RX_TP2, USART_TX_TP1 |
| 4 | 5.1kΩ | Resistor_SMD:R_0402_1005Metric | R2, R3, R4, R5 |
| 3 | TS-1088-AR02016 | lcsc_footprints:C720477_SW-SMD_L3_9-W3_0-P4_45 | BOOT0, RESET1, USER1 |
| 2 | 10uF | Capacitor_SMD:C_0402_1005Metric | C1, C2 |
| 2 | 2.2uF | Capacitor_SMD:C_0402_1005Metric | C9, C15 |
| 2 | 30pF | Capacitor_SMD:C_0402_1005Metric | C3, C4 |
| 2 | 42.2kΩ | Resistor_SMD:R_0402_1005Metric | R11, R12 |
| 2 | KH-TYPE-C-16P | lcsc_footprints:C709357_USB-C-SMD_KH-TYPE-C-16P | U2, U3 |
| 2 | NCD0603R1 | LED_SMD:LED_0603_1608Metric | LED4, PWR1 |
| 2 | USBLC6-2P6 | lcsc_footprints:C2827693_SOT-666-6_L1_6-W1_2-P0_50-LS1_6-BL | D1, D2 |
| 2 | XL-1608UYC-06 | LED_SMD:LED_0603_1608Metric | LED1, LED2 |
| 1 | 1kΩ | Resistor_SMD:R_0402_1005Metric | R9 |
| 1 | 25.5kΩ | Resistor_SMD:R_0402_1005Metric | R8 |
| 1 | 4.7uF | Capacitor_SMD:C_0402_1005Metric | C7 |
| 1 | CH32V467WEU6 | lcsc_footprints:C55778389_QFN-68_L8_0-W8_0-P0_40-TL-EP5_5 | U5 |
| 1 | JK-SMD0805-020-30V | Fuse:Fuse_0805_2012Metric | F1 |
| 1 | LP5907SNX-3.3/NOPB | lcsc_footprints:C133572_ZQFN-4L_L1_0-W1_0-P0_63-BL-EP | U1 |
| 1 | TPS2121RUXR | lcsc_footprints:C485916_VQFN-HR-12_L2_5-W2_0-P0_50-BL | U4 |
| 1 | XC32M4-25.000-F20NJDT | lcsc_footprints:C2842189_CRYSTAL-SMD_4P-L3_2-W2_5-BL | X2 |
| 1 | XL-1608UGC-04 | LED_SMD:LED_0603_1608Metric | LED3 |
| 1 | YC124-JR-071KL | lcsc_footprints:C326869_RES-ARRAY-SMD_0804-8P-L2_0-W1_0-BL | RN1 |
It measures 26 × 32.5 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
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).

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.



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.


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

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

thejamesrhodes/IMU-Quantisation-research-project
Research into quantisation effects in MEMS gyroscopes using custom STM32 hardware.