

Filestick
Econet on a stick
- Size
- 88 × 54 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 108
- Nets
- 97
- Pads
- 398
- Tracks, vias
- 863, 123
- Pours
- 5
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 15 Jul 2023
- Updated
- 7 Nov 2026
Overview
Filestick is an open-source printed circuit board by spectrumero, from the spectrumero/filestick repository on GitHub. It is a 4-layer board of 88 × 54 mm with 108 parts on 97 nets, routed with 863 tracks and 123 vias.
It is built around the ICE40UP5K-SG48ITR50, SN65HVD75D and FT230XS-R, with the LMV324, BAT54S and 1N4148WT among its other parts. Its parts include 35 resistors, 33 capacitors, 12 diodes, 9 connectors and 8 ICs. It belongs with the FPGA and CPLD boards of this library.
Main components
6ICE40UP5K-SG48ITR50
QFN-48QFN-48 Programmable Logic Device (CPLDs/FPGAs) ROHSLatticeProgrammable Logic Device (CPLDs/FPGAs)SN65HVD75D
SOIC-8-40℃~+125℃ 1 1 20Mbps 213 3V~3.6V 950uA Half-Duplex Transceiver ±15kV SOIC-8 RS-485 / RS-422 ICs ROHSTexas InstrumentsRS-485 / RS-422 ICsFT230XS-R
SSOP-16-150mil-40℃~+85℃ 125uA 3.3V~5V 8mA USB 2.0 USB to UART SSOP-16-150mil USB Converters ROHSFTDIUSB ConvertersLMV324
SOP-14-40℃~+85℃ 1MHz 2.8dB 250nA 3V~5.5V 4 400V/ms 40mA 40uV/√Hz@1kHz 430uA 5nA 7mV Built-in compensation、ESD protection SOP-14 Operational Amplifier ROHSIDCHIPOperational AmplifierBAT54S
SOT-231 Pair Series Connection 1V@100mA 200mA 2uA@25V 30V 600mA SOT-23 Schottky Diodes ROHSMDDSchottky Diodes1N4148WT
SOD-523-55℃~+150℃ 1.25V@150mA 100V 150mA 150mW 1uA@75V 2A 4ns Independent SOD-523 Switching Diodes ROHShongjiachengSwitching Diodes
README
README.mdFileStick
This is still a very early work in progress.
This project implements an Econet fileserver "onna stick". Acorn had the FileStore, so this is kind of a play on words on the FileStore. The system is built on a Lattice UltraPlus 5K FPGA, which includes 128kbyte of static RAM on the chip, as well as a number of dual ported blockrams, which makes it ideal for a small system project.
The prototype board is based on the UPduino 3.1 board. See: https://tinyvision.ai/products/upduino-v3-1
The version 1 board contains the econet front end, the up5k FPGA, an SD card slot, flash memory and a USB interface, implemented with an FTDI USB UART.

The system consists of a RISC-V core (modified FemtoRV core supporting some extra CSRs, the ecall instruction to handle system calls, ebreak and some limited illegal instruction trapping). The core is an rv32imc (RISC-V 32 bit with the multiply/divide and compressed instructions extensions).
Features
- USB powered, < 500mA
- Simple RISC-V implementation and early microcomputer style operating
system. System functions via
ecallinterface. - Fully buffered econet implementation, with econet exposed via standard open/read/write/close/ioctl operations.
- Switchable econet clock generation and termination, so that you don't need a separate clock and terminators for a small Econet.
- Programmable timers.
- USB serial interface with hardware FIFO and hardware CTS/RTS flow control. Has an interactive mode for use as the system console and raw mode for transferring files over USB etc.
- FAT support using FatFS for both microSD and built-in flash.
- RGB LED, useful for showing system activity.
- C / C++ programming made easy with newlib and GCC riscv cross compiler, and a lightweight library and specs file for system-specifics.
Project structure
-
hardware: Contains the Verilog source code. Requires a recent version of yosys, nextpnr, and the icestorm tools. (Debian users will need to build these from source, as Debian is still on the old arachnepnr).
-
system: Contains the operating system. This isn't a multiuser/ multitasking operating system, it's an OS in the vein of a classic home micro's operating system. It does provide a number of system calls using the Linux rv32 syscall numbers. Remember there is no virtual memory on this very small system, however, some simple memory protection is planned so that user programs can't accidentally overwrite kernel memory or device address space.
-
lib: The filestick library. This is required for most userspace programs as at the very least it provides the sbrk implementation needed to properly support libc's malloc.
Other programs
(Full disclosure: the emulator and BASIC interpreter below was done with the full assistance of Claude Code, much as it would be an interesting project to do them from scratch, it would take me far too long, I had already been putting off writing the emulator for 2 years :-) )
-
emulator: An emulator. See the README file for how to use it. The emulator is based off the Verilog code and should match it closely. At the moment it only supports an OS with pseudottys (e.g. Linux) but it's probably not too hard to do a version for Windows for anyone so inclined. By default, tries to match the running speed of the real hardware.
-
basic: A small BBC BASIC implementation. Implements most of BASIC II as you would find on a BBC Micro and should be compatible with a saved BBC BASIC file. Graphics/sound/screen modes not implemented because there aren't any. Nor is there an assembler (if you want to write rv32 asm, I suggest using xpack's gnu as). The code segment is around 28k, and when running on the board, there's about 33k available for BASIC programs.
-
cputest: A test suite for the CPU, checking each unprivileged RV32IMC instruction against the RISC-V specification. See the README file.
Toolchain
The xPack GNU RISC-V embedded GCC project is used to build all source code. xPack provides ready-to-run toolchains for many platforms including Linux, Windows and MacOS. Other GCC toolchains will probably work, but xPack is likely the easiest/most convenient to use.
The xPack toolchain includes newlib (the libc).
See their releases here: https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases
The build system uses cmake. If you're running Linux, your distro almost certainly has cmake. Otherwise see: https://cmake.org/
Building
To build the gateware, you will need yosys, nextpnr and icestorm tools installed. Run:
$ cd rtl
$ make PCF=<pcf version of your board>If the PCF variable is left unset, the default will be picked which will be for the latest version of the hardware.
To build the software, assuming a suitable rv32 compiler (e.g. the xpack one suggested):
$ cmake -B build
$ cd build
$ makeOutputs will be build/system/filestick-system.bin, build/boot/filestick-boot.bin,
build/lib/libfilestick.a, build/init/init.elf.
Installing
To install the gateware, in the rtl directory run make flash which will use a
suitable FTDI FT232H programmer to write the flash. This also installs the bootloader
as part of the gateware file.
To install the system image with the FTDI programmer:
iceprog -d i:0x0403:0x6014 -X -o 0x020000 build/system/filestick-system.binTo install init with the FTDI programmer:
iceprog -d i:0x0403:0x6014 -o 0x030000 build/init/init.elfTo install the in-built filesystem:
iceprog -d i:0x0403:0x6014 -o 0x040000 256kfs.img(256kfs.img is a blank 256k fat12 filesystem, used for storing system settings and some basic software).
TODO
There's much to do. More to come later, including how to write programs for the FileStick.
Parts
108| Qty | Value | Footprint | References |
|---|---|---|---|
| 22 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C10, C11, C12, C13, C14, C16, C17, C18, C20, C24, C25, C28, C29, C30, C31 +6 |
| 11 | 1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R3, R4, R11, R20, R22, R27, R28, R29, R30, R31, R32 |
| 7 | 560 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R16, R18, R19, R21, R23, R24, R26 |
| 6 | 4.7uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C15, C19, C21, C22, C27, C33 |
| 5 | 2N7002 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2, Q3, Q4, Q5 |
| 5 | LED | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D7, D8, D9, D10, D11 |
| 4 | 56 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2, R7, R10 |
| 3 | 36k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R9, R15, R25 |
| 3 | BAT54S | Package_TO_SOT_SMD:SOT-23 | D1, D2, D3 |
| 2 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R14, R33 |
| 2 | 10uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C23, C26 |
| 2 | 27 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R5, R6 |
| 2 | 47pF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C3, C4 |
| 2 | Conn_01x02_Pin | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J6, J7 |
| 2 | DIN-5_180degree | filestick-footprints:Lumberg_DIN41524_5pin | J1, J4 |
| 2 | SN65HVD75 | Package_SO:SOIC-8_5.3x6.2mm_P1.27mm | U1, U2 |
| 1 | 0 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R17 |
| 1 | 100R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R34 |
| 1 | 10nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C2 |
| 1 | 120 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R35 |
| 1 | 1N4148WT | Diode_SMD:D_SOD-523 | D12 |
| 1 | 1R0 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R13 |
| 1 | 470k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R8 |
| 1 | 5k1 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R12 |
| 1 | ASV-xxxMHz | Oscillator:Oscillator_SMD_Abracon_ASV-4Pin_7.0x5.1mm | X1 |
| 1 | AT25SF081-SSHD-X | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U6 |
| 1 | Collision Mon TP | Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Vertical | TP1 |
| 1 | Conn_01x08_Pin | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J9 |
| 1 | Conn_01x09_Pin | Connector_PinHeader_2.54mm:PinHeader_1x09_P2.54mm_Vertical | J5 |
| 1 | Conn_02x08_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_Vertical | J8 |
| 1 | FT230XS | Package_SO:SSOP-16_3.9x4.9mm_P0.635mm | U5 |
| 1 | FerriteBead | Inductor_SMD:L_0603_1608Metric_Pad1.05x0.95mm_HandSolder | FB1 |
| 1 | ICE40UP5K-SG48ITR | Package_DFN_QFN:QFN-48-1EP_7x7mm_P0.5mm_EP5.6x5.6mm | U4 |
| 1 | LD1117S12TR_SOT223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U7 |
| 1 | LD1117S33TR_SOT223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U8 |
| 1 | LED_ABGR CLMVC-FKA-CLBDGL7LBB79353 | LED_SMD:LED_Cree-PLCC4_2x2mm_CW | D4 |
| 1 | LMV324 | Package_SO:SO-14_5.3x10.2mm_P1.27mm | U3 |
| 1 | Micro_SD_Card_Det2 | Connector_Card:microSD_HC_Hirose_DM3D-SF | J2 |
| 1 | RX | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D6 |
| 1 | SW_Push | Button_Switch_SMD:SW_SPST_PTS645 | SW1 |
| 1 | TX | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D5 |
| 1 | Term En 9V TP | Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Vertical | TP2 |
| 1 | USB_B_Micro | Connector_USB:USB_Micro-B_Molex-105017-0001 | J3 |
| 1 | VDD TX TP | Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Vertical | TP3 |
More from spectrumero/filestick
1- 4 layers85 × 75 mm

Similar boards
- 4 layers10 × 22.5 mm

- 4 layers135 × 70 mm

Bms c1
OpenConverters/Faraday
The living record of ABT #422 (closed 2026-08-01; this file is its successor — update it as boards land). The program: grow the open-source converter corpus, track (a) the derive success rate of the critical-mesh…
210 partsMIT - 2 layers30 × 17.1 mm

Rs485 SN65HVD75 TestBoard
horychen/ProjectEureka
12 phase motor drive including inverter, microcontroller-mother-board, sensing, communication, DAC, etc.
11 parts17GPL-3.0 - 4 layers103.5 × 91.3 mm

- 4 layers80 × 80.2 mm

5XL REV0
DangerousPrototypes/BusPirate5-hardware
Bus Pirate Hardware and accessories for v5 and higher
227 parts125MIT - 2 layers73.7 × 23.4 mm

ROV CTD
PhilipMcGaw/robot-NautiPi
NautiPi is the physical hardware and embedded-project repository for the robot projects. It contains electronics, PCB and KiCad work, Arduino projects, component records, mechanical references, photographs, and retained…
79 parts - 4 layers89 × 58 mm

HALMET
hatlabs/HALMET-hardware
Hat Labs Marine Engine & Tank interface hardware design files
227 parts8CC-BY-4.0 - 2 layers180 × 100 mm

Controller V2
omeralaa11/BLDC-Motor-controller-for-Shell-eco-marathon-
Hardware design of A BLDC Motor controller design for a 350W motor used in Shell eco marathon Qatar 2026 competition
174 parts
Questions
How big is the Filestick PCB?
It measures 88 × 54 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Filestick use?
108 parts, built around the ICE40UP5K-SG48ITR50, SN65HVD75D, FT230XS-R and LMV324. 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 Filestick KiCad files?
From the spectrumero/filestick repository on GitHub, at the commit this page was made from: the board is pcb/filestick/filestick.kicad_pcb and its schematic pcb/filestick/filestick.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Filestick design in my own project?
Its repository states no licence, so its author keeps all rights: ask spectrumero before reusing the design.