Skip to the content
4 layers88 × 54 mmFilestick, the printed circuit board in 3D

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

6

README

README.md

FileStick

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.

V1 board

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 ecall interface.
  • 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:

text
$ 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):

text
$ cmake -B build
$ cd build
$ make

Outputs 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:

text
iceprog -d i:0x0403:0x6014 -X -o 0x020000 build/system/filestick-system.bin

To install init with the FTDI programmer:

text
iceprog -d i:0x0403:0x6014 -o 0x030000 build/init/init.elf

To install the in-built filesystem:

text
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
QtyValueFootprintReferences
22100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C10, C11, C12, C13, C14, C16, C17, C18, C20, C24, C25, C28, C29, C30, C31 +6
111kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3, R4, R11, R20, R22, R27, R28, R29, R30, R31, R32
7560Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR16, R18, R19, R21, R23, R24, R26
64.7uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC15, C19, C21, C22, C27, C33
52N7002Package_TO_SOT_SMD:SOT-23Q1, Q2, Q3, Q4, Q5
5LEDLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD7, D8, D9, D10, D11
456Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R7, R10
336kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR9, R15, R25
3BAT54SPackage_TO_SOT_SMD:SOT-23D1, D2, D3
210kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR14, R33
210uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC23, C26
227Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR5, R6
247pFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3, C4
2Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6, J7
2DIN-5_180degreefilestick-footprints:Lumberg_DIN41524_5pinJ1, J4
2SN65HVD75Package_SO:SOIC-8_5.3x6.2mm_P1.27mmU1, U2
10Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR17
1100RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR34
110nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2
1120Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR35
11N4148WTDiode_SMD:D_SOD-523D12
11R0Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR13
1470kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR8
15k1Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR12
1ASV-xxxMHzOscillator:Oscillator_SMD_Abracon_ASV-4Pin_7.0x5.1mmX1
1AT25SF081-SSHD-XPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU6
1Collision Mon TPConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalTP1
1Conn_01x08_PinConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ9
1Conn_01x09_PinConnector_PinHeader_2.54mm:PinHeader_1x09_P2.54mm_VerticalJ5
1Conn_02x08_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_VerticalJ8
1FT230XSPackage_SO:SSOP-16_3.9x4.9mm_P0.635mmU5
1FerriteBeadInductor_SMD:L_0603_1608Metric_Pad1.05x0.95mm_HandSolderFB1
1ICE40UP5K-SG48ITRPackage_DFN_QFN:QFN-48-1EP_7x7mm_P0.5mm_EP5.6x5.6mmU4
1LD1117S12TR_SOT223Package_TO_SOT_SMD:SOT-223-3_TabPin2U7
1LD1117S33TR_SOT223Package_TO_SOT_SMD:SOT-223-3_TabPin2U8
1LED_ABGR CLMVC-FKA-CLBDGL7LBB79353LED_SMD:LED_Cree-PLCC4_2x2mm_CWD4
1LMV324Package_SO:SO-14_5.3x10.2mm_P1.27mmU3
1Micro_SD_Card_Det2Connector_Card:microSD_HC_Hirose_DM3D-SFJ2
1RXLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD6
1SW_PushButton_Switch_SMD:SW_SPST_PTS645SW1
1TXLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD5
1Term En 9V TPConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalTP2
1USB_B_MicroConnector_USB:USB_Micro-B_Molex-105017-0001J3
1VDD TX TPConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalTP3

More from spectrumero/filestick

1

Similar boards

  • 4 layers10 × 22.5 mmCircle, the printed circuit board in 3D

    Circle

    osrf/slow_bldc

    52 parts4Apache-2.0
  • 4 layers135 × 70 mmBms c1, the printed circuit board in 3D

    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 mmRs485 SN65HVD75 TestBoard, the printed circuit board in 3D

    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 mmSTM32 Play Board, the printed circuit board in 3D

    STM32 Play Board

    WillA97/STM32_Play_Board

    schematic of the microcontroller pcb files

    104 parts
  • 4 layers80 × 80.2 mm5XL REV0, the printed circuit board in 3D

    5XL REV0

    DangerousPrototypes/BusPirate5-hardware

    Bus Pirate Hardware and accessories for v5 and higher

    227 parts125MIT
  • 2 layers73.7 × 23.4 mmROV CTD, the printed circuit board in 3D

    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 mmHALMET, the printed circuit board in 3D

    HALMET

    hatlabs/HALMET-hardware

    Hat Labs Marine Engine & Tank interface hardware design files

    227 parts8CC-BY-4.0
  • 2 layers180 × 100 mmController V2, the printed circuit board in 3D

    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.