
Wifi floppy
stefanskotte/webadf
Web-based Amiga ADF library that mounts disks to a Gotek over WiFi

Web-based Amiga ADF library that mounts disks to a Gotek over WiFi
Wifi floppy is an open-source printed circuit board by stefanskotte, from the stefanskotte/webadf repository on GitHub, published under the MIT licence. It is a 4-layer board of 61.4 × 54 mm with 84 parts on 110 nets, routed with 1,064 tracks and 188 vias.
It is built around the RP2350B, 74LVC541AD and W25Q128JVSIQ, with the BSS138, MLZ2012M3R3HT000 and PMEG40T30ERX among its other parts. Its parts include 27 resistors, 24 capacitors, 8 transistors, 6 connectors and 5 ICs. It belongs with the radio and wireless boards and the RP2350 boards of this library.
Rev B with the PIM726 module replaced by its parts on our PCB: RP2350B, 16 MB flash, 16 MB PSRAM, RM2 radio, crystal, core regulator, USB-C, BOOTSEL, SWD. Every GPIO stays where the PIM726 has it, so the firmware's pin map and the pico-sdk board definition are unchanged. Same outline as rev B. Rev B's files are untouched.
The schematic and the routed board agree, and nothing else about the board differs from using a PIM726 on rev B. It is still not a board to order: see "Owed before a fab order".
| Check | Result |
|---|---|
| Layers | 4: signals on F.Cu and B.Cu, GND on In1, +3.3 V on In2 |
| KiCad DRC, with schematic parity | 0 unconnected, 0 errors, 0 parity differences. 24 silkscreen warnings, 21 of them M1's outline over its own pads |
| ERC | 0 errors, 0 warnings |
verify_sch.py | all 75 multi-pin nets match, whatever they are called |
verify_pins.py rev-c.kicad_pcb | 209 of 209 against the RP2350 datasheet, firmware board.c, the pico-sdk header, the RM2 datasheet, and rev B's connected pads |
pnpm hw:verify rev-c | passes: ERC, DRC, firmware pins, J1 lines, 1k pull-ups |
| Gerbers | analysed with kicad-happy. Not yet through JLC's own check |
| Tracks | 0.15 mm, necked as low as 0.09 mm at the QFN, vias 0.45/0.2 mm, spacing 0.127 mm: within JLC's published 4-layer limits, not confirmed by JLC |
From Pimoroni's Pico Plus 2 W schematic unless noted.
| Ref | Part | Note |
|---|---|---|
| U1 | RP2350B, QFN-80 | |
| U3 | W25Q128JVSIQ, SOIC-8 208 mil | Pimoroni's schematic names W25Q128JVPIQ: same family and capacity, check the package suffix when buying |
| U4 | IS66WVS16M8FBLL-104NLI, SOIC-8 150 mil | 16 MB, not Pimoroni's 8 MB. APS6404L-3SQR is pin-compatible and fits the same pads |
| M1 | Raspberry Pi RM2 | Own antenna. Hand-made footprint from RM2 datasheet figure 6 |
| U5 | NCP1117ST33T3G, SOT-223 | Not Pimoroni's AP7366 (the 2026-10-20 rev C note's part, easier to solder and cool) |
| L1 | MLZ2012M3R3HT000 | Pimoroni's, not the Abracon part in Raspberry Pi's design |
Left out as nothing here uses them: the VSYS sense divider and its MOSFET, the 1k links from GP26-28 to GP40-42, the user switch, the Qw/ST connector (its GP4/GP5 are MTR and DIR here; operator confirmed 2026-11-05), the 40-pin header.
The reset button is out (operator, 2026-11-05: BOOTSEL is needed, PIM726's RESET is not). Test pad TP1 on RUN replaces it; RUN keeps its internal pull-up (RP2350 pin table), as on Pimoroni's sheet.
Scope (operator, 2026-11-05): everything stays as it is with a PIM726. So the J5 DRIVE passthrough, Amiga RESET line and keyed I2C connectors from the earlier rev C plan are not on this board. Firmware does not use what is left out: GP26-28, GP43 and GP45 appear in comments only.
rev-c.kicad_sch is rev B's sheet with the module out. mcu.kicad_sch (RP2350B, supplies, crystal, RM2) and support.kicad_sch (USB-C, 3.3 V, flash, PSRAM, BOOTSEL, debug) hold the module's parts, after Pimoroni's sheets. rev-c-schematic.pdf is the print. All new symbols are in rev-c-lib.kicad_sym; apart from RM2 (drawn from RM2 table 2) and the PSRAM (KiCad's APS6404L with ISSI's value) they are KiCad's own.
The sheets are the source: edit them in KiCad. build_board.py reads their netlist for names, values, footprints and links, which is why parity is clean. Swapping MTR and DIR, or removing a PWR_FLAG and a no-connect, in a copy made verify_sch.py fail, as it should.
Differences from Pimoroni: NCP1117 with 10 uF either side (AP7366, 2.2 uF; the 2026-10-20 note's part), 16 MB PSRAM, 10 uF added at RM2's VDDBAT, BOOTSEL as 1k and switch without their diode and user-switch network. Pull-ups (flash CS 3k3, PSRAM CS 100k) and series resistors (27.4 ohm) are Pimoroni's.
The module sits in the bottom right corner with its antenna on the board edge. Of Raspberry Pi's 35.5 x 18.5 mm keep-out, only 26 x 5 mm is on the board; the rest is air. It is a rule area on all layers, about where rev B's was. In a case, what is beyond the edge also counts.
From the ISSI datasheet and hardware_psram/psram.c: same pinout and commands as the APS6404 (35h, EBh with 6 wait cycles, 38h), 2.7-3.6 V, 1024-byte pages. The pico-sdk's size detection names ISSI's 16 MiB ID, and it breaks bursts at 1024 bytes, so a burst cannot cross the part's two stacked dies (its datasheet forbids that). None of it has run on hardware. Firmware needs PICO_PSRAM_SIZE_BYTES and SLOT_COUNT raised to use more than 8 MB.
In order, with KiCad's Python and Freerouting 2.5.0: variants.sh runs build_board.py (places), stitch.py (joins power pins to the planes), Freerouting on the outer layers, and route.py (adds the planes and pours), into v1/. Then by hand: clean.py v1/rev-c.kicad_pcb v1/drc1.json removes the router's stray vias and widens any neck below 0.09 mm, finish.py adds fiducials and sets the silkscreen, verify_pins.py checks. The fiducials landed at free spots, not in the corners: place them properly in KiCad. Part references on the new parts are hidden until someone places them.
package.sh builds rev-c-kicad-project.zip: the project with wifi-floppy-lib copied in and the library tables pointed at the copies, so it opens anywhere with KiCad 10. Rebuild it after any change.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 100nF | Capacitor_SMD:C_0402_1005Metric | C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C27 |
| 10 | 1k | wifi-floppy-lib:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R1, R2, R3, R4, R5, R6, R7, R8, R9, R11 |
| 8 | BSS138 | wifi-floppy-lib:SOT-23 | Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8 |
| 5 | 10uF | Capacitor_SMD:C_0603_1608Metric | C21, C23, C29, C30, C31 |
| 3 | 10k | Resistor_SMD:R_0402_1005Metric | R31, R33, R34 |
| 3 | 2.2uF | Capacitor_SMD:C_0603_1608Metric | C22, C24, C28 |
| 3 | 27.4 | Resistor_SMD:R_0402_1005Metric | R20, R25, R26 |
| 3 | Fiducial_1mm_Mask2mm | Fiducial_1mm_Mask2mm | FID1, FID2, FID3 |
| 2 | 10pF | Capacitor_SMD:C_0402_1005Metric | C25, C26 |
| 2 | 1k | Resistor_SMD:R_0402_1005Metric | R22, R29 |
| 2 | 470 | Resistor_SMD:R_0402_1005Metric | R30, R32 |
| 2 | 5k1 | Resistor_SMD:R_0402_1005Metric | R27, R28 |
| 2 | Conn_01x04 | wifi-floppy-lib:PinHeader_1x04_P2.54mm_Vertical | J3, J4 |
| 1 | 100k | Resistor_SMD:R_0402_1005Metric | R24 |
| 1 | 100nF | wifi-floppy-lib:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C1 |
| 1 | 10k | wifi-floppy-lib:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R10 |
| 1 | 10uF | wifi-floppy-lib:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C3 |
| 1 | 12MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 22 | wifi-floppy-lib:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R12 |
| 1 | 220 | Resistor_SMD:R_0402_1005Metric | R21 |
| 1 | 3k3 | Resistor_SMD:R_0402_1005Metric | R23 |
| 1 | 74LVC541A | wifi-floppy-lib:SOIC-20W_7.5x15.4mm_P1.27mm | U2 |
| 1 | BLM18EG471SN1D | Inductor_SMD:L_0603_1608Metric | L2 |
| 1 | BOOTSEL | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW1 |
| 1 | Buzzer | wifi-floppy-lib:Buzzer_TDK_PS1240P02BT_D12.2mm_H6.5mm | BZ1 |
| 1 | Conn_01x04 | wifi-floppy-lib:PinHeader_1x04_P2.54mm_Horizontal | J2 |
| 1 | Conn_02x17_Odd_Even | wifi-floppy-lib:IDC-Header_2x17_P2.54mm_Vertical | J1 |
| 1 | IS66WVS16M8FBLL-104NLI | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U4 |
| 1 | LED | wifi-floppy-lib:LED_1206_3216Metric_Pad1.42x1.75mm_HandSolder | D2 |
| 1 | MLZ2012M3R3HT000 | Inductor_SMD:L_0805_2012Metric | L1 |
| 1 | NCP1117ST33T3G | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U5 |
| 1 | PMEG40T30ER | Diode_SMD:D_SOD-123F | D3 |
| 1 | RM2 | rev-c-lib:Raspberry_Pi_RM2 | M1 |
| 1 | RP2350B | Package_DFN_QFN:QFN-80-1EP_10x10mm_P0.4mm_EP3.4x3.4mm_ThermalVias | U1 |
| 1 | RUN | TestPoint:TestPoint_Pad_D1.0mm | TP1 |
| 1 | SS14 | wifi-floppy-lib:D_SMA_Handsoldering | D1 |
| 1 | SWD | Connector_JST:JST_SH_BM03B-SRSS-TB_1x03-1MP_P1.00mm_Vertical | J7 |
| 1 | USB-C | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J6 |
| 1 | W25Q128JVSIQ | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U3 |
| 1 | green | LED_SMD:LED_0603_1608Metric | D4 |

stefanskotte/webadf
Web-based Amiga ADF library that mounts disks to a Gotek over WiFi

elrir01/AudioPico
This board receive audio from a BT source like a phone and outputs via a DAC the audio. It's an old project of mine but I've decided to publish it just now, so the full description is not ready and will be updated in…

OpenStickCommunity/Hardware
A collection of hardware designs by members of the OpenStickCommunity


runger1101001/SimpleFOCNano
A small BLDC driver shield in Arduino Nano form-factor.


JitterCompany/debug-tools
Collection of useful utility PCBs for development purposes


It measures 61.4 × 54 mm and has 4 copper layers, 1.6 mm thick.
84 parts, built around the RP2350B, 74LVC541AD, W25Q128JVSIQ and BSS138. 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 stefanskotte/webadf repository on GitHub, at the commit this page was made from: the board is wifi-floppy/hardware/rev-c/rev-c.kicad_pcb and its schematic wifi-floppy/hardware/rev-c/mcu.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).