Skip to main content
Raspberry Pi 4 as an SMB1 File Server for Windows 98 Retro Rigs

Raspberry Pi 4 as an SMB1 File Server for Windows 98 Retro Rigs

The Samba NT1 configuration that finally lets a Windows 98 machine mount a modern SSD over the network.

Two smb.conf keys let a Windows 98 PC mount a Raspberry Pi 4 Samba share. Full config, parts list, throughput math and fixes for the usual failures.

As an Amazon Associate, SpecPicks earns from qualifying purchases. See our review methodology. Catalog prices below were observed on 2026-08-30 and change frequently — check the live listing before you buy.

Put Samba on a Raspberry Pi 4 and set two keys in smb.conf: server min protocol = NT1 and ntlm auth = yes. Per the Samba smb.conf manual, those re-enable the SMB1/NT1 dialect and the legacy authentication a Windows 98 client speaks. Expect well under the 12.5 MB/s theoretical ceiling of a 100 Mbit retro NIC — the retro machine, not the Pi, is the bottleneck.

Why sneakernet is the wrong default

Almost every period-correct build guide — including several on this site — ends at the same unresolved step. The machine boots, the drivers are on the internet, and the internet is on the other side of a thirty-year protocol gap. The default answer is sneakernet: shut the retro rig down, pull its boot media, carry it to a modern PC, write files to it, carry it back, reassemble, boot. That loop is fine exactly once.

It stops being fine the moment you have two retro machines, or one machine you are actively iterating on. Testing four video driver revisions on a Windows 98 box means four full disassembly cycles if the transfer path is physical. It also burns insertion cycles on connectors — IDE headers, CompactFlash sockets and card readers all have finite mating counts, and the CF socket on a cheap CF-to-IDE adapter is not the part you want to wear out first.

A network share collapses that loop to a file copy. The retro machine stays assembled and powered on, the files live on a modern SSD that you can also reach from your normal desktop, and the iteration cost of "try the other driver" drops from fifteen minutes to fifteen seconds. It is the single highest-leverage addition to a retro bench, and the hardware to run it costs less than most single components in the machines it serves.

This build is for someone who already has at least one working period-correct machine with an Ethernet port — a 10/100 PCI NIC, or an ISA card if you are deeper into the 90s — and wants a permanent, always-on place to keep driver archives, CD images, install media and game files. It assumes you are comfortable editing a config file over SSH and that you understand you are deliberately re-enabling a deprecated protocol on a scoped segment of your network.

Key takeaways

  • Windows 98 cannot mount a default modern Samba share because Samba 4.11 and later refuse the SMB1/NT1 dialect and the NTLMv1 authentication Windows 98 uses.
  • Two smb.conf keys fix it: server min protocol = NT1 and ntlm auth = yes. On recent Samba builds ntlm auth = ntlmv1-permitted is the equivalent multi-valued form.
  • The bottleneck is always the retro machine's NIC. A 100 Mbit card caps at 12.5 MB/s in theory; a 10 Mbit ISA card caps around 1.25 MB/s.
  • Scope, do not skip, the security work: bind the SMB1 instance to the retro segment, give it a dedicated low-privilege share user, and never expose port 445 beyond that segment.
  • If the destination is a CompactFlash boot card, the card's sustained write rate — not the network — becomes the real ceiling.

Why can't Windows 98 see a modern Samba share out of the box?

Two separate things are broken, and people usually only fix one.

The first is the dialect. SMB has gone through three major generations: SMB1 (the dialect Samba calls NT1), SMB2 and SMB3. Windows 98 speaks only SMB1. Microsoft has spent the better part of a decade removing it — the Microsoft guidance on detecting, enabling and disabling SMBv1 documents SMB1 as deprecated and not installed by default on modern Windows. Samba followed: modern releases default server min protocol to an SMB2 dialect, which means a default install will not negotiate with a Windows 98 client at all. The connection dies during protocol negotiation, before authentication is even attempted.

The second is authentication. Windows 98 authenticates with LM and NTLMv1. Both are cryptographically dead, and Samba disables them by default. This produces the confusing failure mode where the retro machine can see the server in Network Neighborhood — because NetBIOS name resolution and the browse list are a separate mechanism that still works — but every attempt to open the share bounces with a password prompt that never accepts anything. Browse succeeds; session setup fails.

The keys that fix both, per the smb.conf manual:

  • server min protocol = NT1 — lowers the floor so the SMB1 dialect is negotiable again.
  • ntlm auth = yes — permits NTLMv1. On Samba builds where ntlm auth is multi-valued, ntlm auth = ntlmv1-permitted expresses the same intent more precisely.
  • lanman auth = yes — only if the client is falling back to raw LM. Try without it first; it is a further downgrade and most Windows 98 installs do not need it.

Both keys are required. Setting the dialect without the authentication gives you the browse-but-cannot-log-in symptom above; setting the authentication without the dialect gives you nothing at all, because negotiation never reaches the auth stage.

What hardware does this need?

The host is a Raspberry Pi 4 Model B, listed at $123.49 in the SpecPicks catalog on 2026-08-30. Per its product listing it uses a Broadcom BCM2711 quad-core Cortex-A72 at 1.5 GHz with gigabit Ethernet and two USB 3.0 ports — every one of those figures is far in excess of what a Windows 98 client can consume, which is exactly the point.

The share storage is a SATA SSD hung off USB 3.0. The Crucial BX500 1TB is the pick at $179.99, rated up to 540 MB/s read per its listing. The Kingston A400 960GB at $129.99 is the cheaper alternative at a similar capacity; either drive is dramatically faster than anything downstream of it in this build. Do not use a microSD card as the share. It works, and then it does not, and the failure is usually silent corruption rather than a clean death.

The ingest path is the Unitek SATA/IDE USB 3.0 dual-drive adapter at $34.99. Per its listing it exposes a dual-head IDE connector (40-pin and 44-pin) plus a SATA port, handles 2.5-inch and 3.5-inch drives up to 24 TB, and can operate one SATA drive and one IDE drive simultaneously. That combination is what lets you read a vintage IDE drive and write its contents onto the modern share in one pass, without a second machine.

The retro rig's destination media is a Transcend 4GB CompactFlash card at $10.99, whose listing quotes a 133× rating, described as up to 21.5 MB/s. Read that number as the read ceiling, not the sustained write rate — the gap between those two is the reason this card, and not the network, ends up being the slow part of the pipeline.

Spec-delta table

ComponentRole in the buildKey specInterface to the retro rigNotes
Raspberry Pi 4 Model B (4GB)Samba host, always-onBCM2711 quad Cortex-A72 @ 1.5 GHz, gigabit EthernetEthernet (via switch)Overspecified on purpose; CPU is never the limit
Crucial BX500 1TB SATA SSDShare storageUp to 540 MB/s readIndirect — served over SMBUSB 3.0 enclosure or adapter required
Unitek SATA/IDE USB 3.0 adapterIngesting vintage drivesUSB 3.0, 40/44-pin IDE + SATA, up to 24 TBDirect — reads the rig's old IDE driveDual-drive: SATA and IDE at once
Transcend 4GB CompactFlashRetro rig boot/destination media133× rated, up to 21.5 MB/sCF-to-IDE adapter in the retro rigSustained write is the real ceiling
10/100 PCI NIC (already in the rig)The retro side of the link100 Mbit = 12.5 MB/s theoreticalPCI slotThe actual bottleneck in the whole build

Prices may vary. Check the live listing before purchase.

How do I configure Samba for NT1 clients without exposing the rest of my LAN?

The security posture that makes this defensible is scope. You are not making SMB1 available on your network; you are making it available on one interface, to one user, for one directory.

A working smb.conf for this job:

[global]
 workgroup = RETRO
 server string = Retro File Server
 security = user

 # Re-enable the SMB1/NT1 dialect for Windows 9x clients
 server min protocol = NT1
 server max protocol = SMB3

 # Permit NTLMv1 (use ntlmv1-permitted on multi-valued builds)
 ntlm auth = yes

 # Scope the listener: retro segment only, plus loopback
 interfaces = lo eth0
 bind interfaces only = yes
 hosts allow = 192.168.50. 127.
 hosts deny = 0.0.0.0/0

 # NetBIOS name resolution for clients with no WINS/DNS path
 local master = yes
 preferred master = yes
 wins support = yes

 log level = 1
 log file = /var/log/samba/log.%m

[retro]
 path = /srv/retro
 comment = Retro share
 valid users = retrouser
 read only = yes
 browseable = yes
 create mask = 0644
 directory mask = 0755

[retro-drop]
 path = /srv/retro/incoming
 valid users = retrouser
 read only = no
 create mask = 0644

The shape matters more than any single line:

  • A dedicated non-root share user. Create retrouser as a system account with no login shell, then add it to Samba's password database separately with smbpasswd -a retrouser. Its Unix account should own /srv/retro and nothing else on the machine.
  • Read-mostly by default. The main share is read only = yes. A second, small, writable drop directory handles the rare case where the retro machine needs to push a file back. A Windows 98 client with write access to your whole archive is one mistyped deltree away from being a problem.
  • Bound to one interface. bind interfaces only = yes plus an explicit interfaces list means the SMB1-capable daemon is not listening anywhere you did not name. Pair it with hosts allow scoped to the retro subnet.
  • Short, plain-ASCII passwords. Windows 98's password handling predates most of what modern password managers emit. A 10-character alphanumeric password avoids a whole class of client-side failures that look like server misconfiguration.
  • Never route port 445 or 139 off the segment. No port forward, no VPN exposure, no bridging to a guest VLAN. If your router has a UPnP auto-forward feature, verify it has not helpfully published the port for you.

For Pi-side setup — static addressing, hostname, boot configuration — the Raspberry Pi configuration documentation covers the host side. Give the Pi a static IP or a DHCP reservation; a share that moves addresses is a share Windows 98 will stop finding.

How fast is it actually?

Every number below is arithmetic on published interface rates, not a measured result. Use them to find the bottleneck, not to predict a stopwatch reading.

Link in the chainTheoretical ceilingWhat it means here
10 Mbit ISA NIC (early-90s rig)~1.25 MB/sA 650 MB CD image takes the better part of ten minutes
100 Mbit PCI NIC (Win98-era rig)12.5 MB/sThe practical cap; SMB1 overhead and client CPU eat into it
Raspberry Pi 4 gigabit Ethernet125 MB/sTen times what the fastest retro client can pull
USB 3.0 SATA SSD (BX500, up to 540 MB/s read)Interface-limited well above 300 MB/sNever the constraint
CompactFlash 133× destination card~21.5 MB/s quoted readSustained write is materially lower; this becomes the ceiling

The pattern is consistent: the modern half of the build is between ten and forty times faster than the vintage half. That is why a Pi 4 is the right host and a Pi 5 is not required — you cannot spend your way past a 100 Mbit ISA-era NIC by upgrading the server.

The one case where the network is not the slowest link is when you are writing directly onto a CompactFlash card in the retro machine. Then the card's sustained write rate takes over, and it is typically well below the quoted read figure. The workaround is boring and effective: copy to the retro machine's hard disk first if it has one, or accept that CF writes are a coffee-break operation and batch them.

How do I get 90s CD-ROM images and drivers onto the share?

The ingest side is where the Unitek adapter earns its $34.99. Connect the vintage IDE drive to the 40-pin head, connect the adapter to a modern machine over USB 3.0, and read the drive as a normal block device. Two rules: use the adapter's external power supply for any 3.5-inch drive, because USB bus power will not spin one up, and image the whole drive before you go browsing it — a thirty-year-old platter has a limited number of good spin-ups left, and you want exactly one of them to produce a complete copy.

Directory layout on the share should be built for the client, not for you. Windows 98 handles long filenames through VFAT, but the browsing experience degrades badly with deep nesting, and path-length limits will bite on a deeply nested archive reached through a mapped drive letter. A layout that holds up:

/srv/retro/
 drivers/
 video/ s3/ voodoo/ nvidia/
 sound/ sb16/ awe32/ ess/
 net/ 3com/ realtek/
 isos/
 games/
 incoming/

Keep directory names short, lowercase and free of spaces. Not because Windows 98 cannot handle spaces — it can — but because you will eventually be typing these paths at a DOS prompt during a driver install, and quoting rules at a real-mode command prompt are a bad place to discover you named a folder Sound Blaster Drivers (Final).

Map the share to a drive letter on the client rather than browsing it each time. A mapped drive survives reboots if you check "reconnect at logon", and it gives installers a stable path instead of a UNC path some 90s setup programs refuse to accept.

What breaks, and how do you fix it?

"Network path not found." Nine times out of ten this is name resolution, not the share. Windows 98 resolves server names over NetBIOS, which relies on broadcasts that do not cross subnets or on a WINS server. If the Pi is on a different subnet or your switch is doing anything clever, the broadcast never arrives. Fixes, in order of effort: enable wins support = yes on the Samba host and point the client at it, or add a static entry to C:\WINDOWS\LMHOSTS mapping the Pi's IP to its NetBIOS name, or just connect by IP address in the UNC path.

Server visible, login rejected. This is the auth split described above. server min protocol = NT1 is set but ntlm auth is not. Add it and restart smbd.

Workgroup mismatch. The client's workgroup and the workgroup = value in smb.conf must match for the machine to appear in Network Neighborhood. It does not affect whether a direct UNC path works, which is why a machine can be simultaneously invisible and reachable.

Long filenames and path lengths. Deep archive trees produce paths that exceed what the client tolerates through a mapped drive. Flatten the tree. If a specific extracted archive is the problem, extract it on the Pi rather than on the retro machine.

Case sensitivity. Linux filesystems are case-sensitive; Windows 98 is not. A DOS-era installer looking for SETUP.EXE will not find setup.exe. Samba's default case handling covers most of this, but if an installer insists a file is missing when you can see it in the directory listing, case is the first thing to check.

Old files with weird permissions. Files recovered from a vintage drive often arrive with ownership that means nothing on the Pi. A single chown -R retrouser:retrouser /srv/retro after each ingest saves a lot of confused debugging.

Should you use CompactFlash or a SATA SSD as the retro rig's destination drive?

CompactFlash is electrically an IDE device, which is why a passive CF-to-IDE adapter works at all and why the Transcend 4GB card at $10.99 is the period-correct answer. It is silent, draws almost nothing, produces no heat, and its capacity is small enough that a 90s BIOS and a FAT32 partition are both comfortable with it. For a machine that boots one OS and runs a fixed set of games, that is the right shape.

The counter-case is a SATA SSD behind an adapter. A 1 TB BX500 rated up to 540 MB/s is absurd overkill for a machine that cannot read faster than its IDE controller allows, and you will hit BIOS capacity limits that require partitioning games — but you get vastly more space, far better sustained write behaviour, and a drive you can pull and read in any modern machine without a card reader.

Pick CF when the machine is a finished, period-correct build you will not be constantly rewriting. Pick the SSD when the machine is a test bench you are reimaging every week, because the write-endurance and sustained-write differences are exactly the axes a test bench stresses.

Perf-per-dollar and perf-per-watt for an always-on retro file server

The build cost, at SpecPicks catalog prices on 2026-08-30: Pi 4 Model B at $123.49, Crucial BX500 1TB at $179.99, Unitek adapter at $34.99, Transcend CF card at $10.99 — $349.46 before a case, power supply and USB-to-SATA enclosure. Call it under $400 all-in.

The alternative is leaving a full desktop powered on to serve the same files. The Pi 4's official power supply is a 5 V / 3 A unit, so 15 W is a hard ceiling on what the board can draw, and real draw sits well below that for a file-serving workload with an SSD attached. A desktop doing the same job is a different order of magnitude: assume 60 W idle — a deliberately conservative figure for a full ATX system, stated as an assumption rather than a measurement — and the delta is roughly 50 W, continuous.

At 24/7 operation that assumed 50 W delta is about 438 kWh per year. At $0.15/kWh that is roughly $66 a year, which pays back the Pi and its SSD inside five to six years on electricity alone — and that ignores the desktop's fan noise, its heat output in a room you are also sitting in, and the fact that you probably wanted that desktop for something else.

The perf-per-dollar argument is simpler: every dollar spent making the server faster is wasted, because the client cannot consume it. Spend on storage capacity and on the ingest adapter, not on host performance.

Verdict matrix

Take the CompactFlash path if… the retro machine is a finished period-correct build, you value silence and authenticity, the OS and game set are stable, and 4 GB is enough. The network share then exists to feed the card, not to replace it.

Take the SATA-SSD-over-adapter path if… the machine is a working bench, you reimage frequently, you want more than a few gigabytes of local storage, or you want to be able to pull the drive and mount it on a modern machine without a reader.

Skip the network share entirely if… you own exactly one retro machine, it is finished, and you touch it twice a year. A CF card and a $10 reader will genuinely serve you better than a always-on server you have to maintain.

Bottom line

The gap between a modern file server and a Windows 98 client is two lines of configuration, not a hardware problem. server min protocol = NT1 restores the dialect and ntlm auth = yes restores the authentication, and once both are set the retro machine mounts a modern SSD as naturally as it would have mounted a 1998 NT server. A Raspberry Pi 4 at $123.49 is the right host precisely because it is overspecified — the 100 Mbit NIC in the retro rig caps the whole chain at 12.5 MB/s no matter what you put behind it.

The part that deserves real thought is not performance. It is scope: a dedicated share user, a read-mostly export, an interface binding, and a firm rule that port 445 never leaves the retro segment. Do that, and you get the one thing every period-correct build guide is missing — a way to actually put files on the machine you just finished.

Related guides

Citations and sources

This piece is editorial synthesis based on publicly available information. No independent first-party benchmarking is reported. Throughput figures are arithmetic on published interface rates, and prices are SpecPicks catalog street prices observed on 2026-08-30.

— Mike Perry · Last verified 2026-08-30

Products mentioned in this article

Live Amazon & eBay pricing, plus full specs and alternatives on each product page.

As an Amazon Associate, SpecPicks earns from qualifying purchases; we also earn on qualifying eBay purchases via the eBay Partner Network. Prices shown were last tracked at crawl time and may vary — check the listing for the current price.

Find this retro hardware on eBay

Pre-2012 hardware isn't sold new on Amazon. eBay is the primary marketplace for the SKUs discussed in this article — auctions and Buy-It-Now listings update continuously.

Search eBay for "Windows 98" Live listings →

SpecPicks earns a commission on qualifying eBay purchases via the eBay Partner Network. Prices and availability change frequently.

Frequently asked questions

Is enabling SMB1 on my network dangerous?
SMB1 is deprecated for good reason — it carries the protocol weaknesses that WannaCry-class worms exploited, and Microsoft disables it by default on modern Windows. The mitigation is scope, not avoidance: run the NT1-enabled Samba instance bound to the retro segment or a dedicated interface, give it its own low-privilege share user, keep the share read-mostly, and never expose port 445 to the internet or to your main VLAN.
Do I need a Raspberry Pi 5, or is the Pi 4 enough?
The Pi 4 is enough and arguably the better fit. The bottleneck in this build is never the host CPU — it is the retro machine's 10/100 Mbit NIC and its ISA or early-PCI bus, both of which saturate long before a quad-core Cortex-A72 does. The Pi 4's gigabit Ethernet and USB 3.0 ports already exceed what any Windows 98 client can pull, and it costs less and runs cooler when left on continuously.
Why does Windows 98 see the server name but refuse to log in?
That symptom is almost always authentication rather than protocol. Windows 98 speaks NTLMv1 and LM, which modern Samba refuses by default, so the browse list resolves over NetBIOS while the session setup fails. Setting `ntlm auth = yes` alongside `server min protocol = NT1` in smb.conf is what closes that gap. Keeping share passwords short and plain-ASCII also avoids a second class of failures on the client side.
Can I skip the network entirely and just move a CompactFlash card?
You can, and for a one-off install it is faster. The card comes out of the retro machine's IDE adapter, goes into a reader on a modern PC, gets loaded and goes back. The network share wins once you have more than one retro machine or you are iterating — swapping a card twenty times to test driver variants is the workflow the share is designed to eliminate, and the card's insertion cycles are finite.
What throughput should I expect, realistically?
Plan around the slowest link, which is the retro rig's NIC. A 10/100 Mbit card tops out near 12.5 MB/s in theory and typically lands well below that once SMB1 overhead and the client's CPU are accounted for. The Pi's USB 3.0 SSD and gigabit port are never the constraint. If the destination is a CompactFlash card, its own sustained write rate becomes the ceiling instead.

Sources

— Mike Perry · Last verified 2026-09-06

Parts this article names

Amazon Associate — prices tracked 2026-09-04, may vary.

More guides & deep dives from the SpecPicks archive

Browse all articles & guides →

More buying guides from SpecPicks

Browse all buying guides →