Free tools Windows power users keep installed
One-click scans. No signup required.
Use the Raspberry Pi as the cabinet-side streaming client and a separate Windows or Linux gaming PC as the host. The host runs the DOS emulator or game launcher, while Steam Link or Moonlight sends its video and audio to the Pi and returns joystick and button input. This arrangement lets a modest Pi drive the arcade display without asking it to emulate every DOS title locally.
For the simplest Steam-centered setup, use Steam Link on a Raspberry Pi 3 or newer and connect both machines by Ethernet. For a more general desktop or launcher workflow, Moonlight has an official Raspberry Pi 4 client and exposes controls for resolution, bitrate and frame rate. In either case, the host PC still does the game processing.
As an Amazon Associate I earn from qualifying purchases.
How the streaming arrangement works
A streaming cabinet has two computers with different jobs. The Raspberry Pi is mounted in or beside the cabinet and connected to the display and arcade controls. It decodes the incoming video, plays the audio, and sends controller events back to the host. The Windows or Linux gaming PC runs the DOS emulator, the game files and any launcher required to start the title.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →| Component | Role | What it must do |
|---|---|---|
| Raspberry Pi | Cabinet client | Run Steam Link or Moonlight, decode the stream, output video and audio, and report control input. |
| Host PC | Game computer | Run the DOS emulator or launcher and the game itself, then encode the desktop or game stream. |
| Network | Low-delay transport | Carry video and audio from the host to the Pi and input events back in the opposite direction. |
| Arcade encoder | Input interface | Present the joystick and buttons to the Pi as a keyboard or gamepad that the client and host can recognize. |
This is not the same as installing a DOS emulator directly on the Pi. Streaming moves the demanding work to the host, so the Pi model is mainly constrained by client support, video output, networking and input compatibility.
#1 Best Overall
- Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
- Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
- CanaKit Premium High-Gloss Raspberry Pi 4 Case with Integrated Fan Mount, CanaKit Low Noise Bearing System Fan
- CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply (US Plug) with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K60p)
- CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)
What happens when you press a cabinet button
- The encoder converts the physical switch into a keyboard key or gamepad button event.
- The Pi client sends that event to the host over the local network.
- The DOS game running on the host reacts to the mapped key or button.
- The host renders a new frame, encodes it and sends the resulting video and audio back to the Pi.
- The Pi displays the frame on the arcade monitor or television.
Every stage adds a small amount of delay. A wired connection reduces the chance that congestion or wireless retransmissions will make the controls feel sluggish.
Hardware and software checklist
Gather the following before assembling the cabinet:
- Raspberry Pi: a Pi 3 or newer for the Steam Link route, or a Raspberry Pi 4 for Moonlight’s officially listed client support.
- Power: an officially supported power supply for the Pi model.
- Boot storage: a microSD card with Raspberry Pi OS installed and enough free space for the client and normal system operation.
- Display connection: an HDMI or micro-HDMI cable, depending on the Pi model and display connector. Models with HDMI support can carry audio over HDMI.
- Network: Ethernet cable for the Pi and host whenever practical. If the board or cabinet layout lacks a usable Ethernet port, use a compatible USB-to-Ethernet adapter.
- Controls: an arcade joystick and button encoder that appears to the Pi as a keyboard or a gamepad.
- Host computer: a Windows or Linux gaming PC that can run the DOS game, its emulator or launcher, and the selected streaming host software.
The Pi does not replace the host PC in this design. If you do not have a computer capable of running the game and streaming its output, neither client application can provide a complete cabinet on its own.
Steam Link or Moonlight?
Both clients perform the same basic job, but they suit different libraries and workflows.
| Decision point | Steam Link | Moonlight |
|---|---|---|
| Pi support covered here | Raspberry Pi 3 or newer. | Official Raspberry Pi 4 client. |
| Best fit | A Steam-centered library, including DOS games added as non-Steam shortcuts. | A general host-desktop or game-launcher workflow. |
| Initial setup | Install the package, sign in to Steam on the host, then pair the Pi and host. | Pair the Pi with the host by local IP, then choose the desktop or launcher exposed by the host. |
| Host compatibility | Streams games the host computer can run through Steam, including non-Steam shortcuts when the host can launch them. | Designed to stream a host desktop or game launcher; the host must be configured with compatible streaming software. |
| Video controls | Uses the Steam Link client and host streaming settings. | Provides configurable resolution, bitrate and frame rate in the client workflow. |
| Network guidance | Valve recommends wired networking; 5 GHz wireless may work but is not recommended on the Raspberry Pi. | Pair and test on the home network before attempting Internet streaming. |
| Controller work | Map the encoder as a keyboard or gamepad and verify the host receives each event. | Use the same encoder and host-side mapping, then verify input before launching the game. |
Choose Steam Link when your titles already live in Steam or you want the shortest path from a Steam library to the cabinet. Choose Moonlight when selecting a host desktop or launcher is more useful than staying inside Steam. You can also keep both clients available and use the one that matches the game or host workflow.
Rank #2
- Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
- 1GB, 2GB, 4GB or 8GB LPDDR4-3200 SDRAM (depending on model)
- 2.4 GHz and 5.0 GHz IEEE 802.11ac wireless, Bluetooth 5.0, BLE Gigabit Ethernet
- 2 USB 3.0 ports; 2 USB 2.0 ports.
- Raspberry Pi standard 40 pin GPIO header (fully backwards compatible with previous boards)
Set up Steam Link on the Raspberry Pi
1. Prepare Raspberry Pi OS
Boot the Pi into Raspberry Pi OS, connect it to the cabinet display and ensure it has network access. A Pi 3 or newer is the supported baseline for the Steam Link application described by Valve.
2. Install the client
Open a terminal and run:
sudo apt update
sudo apt install steamlink
After installation, start Steam Link from the Games menu, or launch it from a terminal with:
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →steamlink
3. Put both computers on the same network
Connect the host PC and Pi to the same home network. Ethernet is the preferred arrangement for both ends. If wireless is unavoidable, keep the Pi and host close to the access point and test the game before permanently mounting the hardware.
4. Sign in and pair
- Sign in to Steam on the host PC.
- Open Steam Link on the Pi.
- Select the host shown by the client and complete the pairing code process.
- Confirm that the Pi can reach the host before changing cabinet wiring or launching a game.
5. Make the DOS game launchable
If the DOS title is already in the host’s Steam library, select it normally. Steam Link can also stream games added as non-Steam shortcuts when the host can launch them. Add the shortcut on the host, verify that it starts correctly at the host monitor, and then select it from the Steam Link library on the Pi.
6. Launch and test controls
Start the title from the Steam Link interface. Test every joystick direction, fire button, start button and coin button while the game is at its input screen. If a control is wrong, correct the encoder or host mapping before attempting a longer play session.
Rank #3
- Broadcom BCM2711, quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1. 5GHz
- 2. 4 GHz and 5. 0 GHz IEEE 802. 11b/g/n/ac wireless LAN, Bluetooth 5. 0, BLE
- 2 × USB 3. 0 ports, 2 x USB 2. 0 Ports
- 2 × micro HDMI ports supproting up to 4Kp60 video resolution
- Micro SD card slot for loading operating system and data storage
Set up Moonlight on a Raspberry Pi 4
Moonlight’s official client list includes Raspberry Pi 4. This route is useful when you want to select the host desktop or a game launcher rather than rely on a Steam library view.
1. Install and prepare the host software
On the Windows or Linux gaming PC, install and configure a Moonlight-compatible streaming host. Make sure the DOS emulator or launcher can be started from that host environment before pairing the Pi. The host must be able to expose either its desktop or the launcher you intend to use.
2. Install Moonlight on the Pi 4
Install the Raspberry Pi client using the distribution method appropriate to your Raspberry Pi OS setup, then open Moonlight from the Pi’s application menu or command line. The exact package command is not specified in the available documentation, so do not substitute a Steam Link package command here.
3. Pair locally first
- Find the host PC’s local IP address.
- In Moonlight on the Pi, add or select the host by that IP address.
- Read the pairing code shown by Moonlight and enter it on the host.
- Wait for the host desktop or launcher to appear in the Pi client.
Moonlight documentation recommends completing pairing on the home network before attempting Internet streaming. A local test isolates cabinet problems from remote-access, firewall and Internet-connection problems.
4. Select the desktop or launcher
After pairing, choose the host desktop or the game launcher exposed by the host. Start the DOS emulator and title from there, then return to the game window if the host desktop is being streamed.
Recommended Free Tools
Rank #4
- Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
- CanaKit 3.5A USB-C Power Supply with Noise Filter (UL Listed) specially designed for the Raspberry Pi 4 (5-foot cable)
- CanaKit USB-C PiSwitch (On/Off Power Switch)
- Set of 3 Aluminum Heat Sinks for the Raspberry Pi 4
5. Set an initial stream mode
A Raspberry Pi Magazine tutorial uses 720p at 60 frames per second as an example and reports trying 30 frames per second on its network. Those values are starting points, not guarantees for every cabinet. Moonlight lets you adjust resolution, bitrate and frame rate, so begin conservatively and increase quality only after the controls and picture remain stable.
Wire the arcade controls
Use an encoder the Pi can identify
The easiest cabinet controls are built around an encoder that presents each switch as a standard keyboard key or gamepad button. The Pi client must see the device, and the host must receive the resulting event through the stream.
Map controls in a deliberate order
- Connect the encoder to the Pi and open the client without starting the game.
- Confirm that the operating system or client detects the joystick and buttons.
- On the host, map the DOS game’s expected directions and actions to the same keys or gamepad buttons.
- Test one direction at a time, followed by each action button.
- Test simultaneous inputs, such as moving and firing, because an encoder or mapping can behave differently when multiple switches are pressed.
- Only after all events arrive correctly should you mount the controls permanently.
There is no universal mapping for every DOS game. Some titles expect keyboard keys, while others accept a gamepad-style device. The encoder’s presentation and the host-side mapping determine whether the cabinet feels native to the game.
Choose Ethernet over Wi-Fi when possible
Valve’s guidance for Steam Link is explicit: “A wired network (5 GHz wireless may work, but is not recommended on the Raspberry Pi).” Run Ethernet to the host and Pi whenever the cabinet layout allows it. A USB-to-Ethernet adapter is an option for a board or installation without a convenient Ethernet port.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Wi-Fi can be usable, but its result depends on signal strength, channel congestion, distance and other traffic on the network. Do not judge a wireless setup from the desktop alone; test an actual game while pressing several controls quickly.
Best Value
- KEEP YOUR PROCESSOR COOL: The busier a processor gets the more it heats up, leading to sub-optimal performance. To prevent this common issue, this kit includes an aluminum alloy case with a pre-installed fan. The aluminum alloy actively draws the heat from the pi board, while the fan further cools the board and case. These cooling mechanisms will help push the limits of your processor and increase its flexibility.
- SIZABLE RAM: This Raspberry Pi 4 comes equipped with 4GB of RAM, which is the same amount of RAM or more RAM than many mainstream laptops contain. With 4GB of RAM, your processor will be capable of running retro gaming setups and common computer applications, media players, and much more!
- SIMPLE TO TURN ON & OFF: This kit includes a USB-C Raspberry Pi 4 compatible power supply with an easy-to-use on/off switch that was designed specifically for the Raspberry Pi 4 model to streamline processing.
- IMPROVEMENTS FROM PREVIOUS MODELS: This latest model of the Raspberry Pi 4 offers groundbreaking increases in processor speed, multimedia performance, connectivity, memory, and more! The desktop performance of this model is comparable to entry-level x86 PC systems.
- VERSATILE USE: The Raspberry Pi may have a small processor, but it is a highly adaptable little computer that can replace your desktop PC. Its functions range from practical to nostalgic since it can power an ad-blocking server as easily as it can power an outmoded gaming setup. Other uses include but are not limited to printing from non-wireless printers, playing media, making time-lapse videos, and building multiplayer network game servers and motion-capture security systems.
Keep the first Moonlight pairing and stream test on the same local network. Remote streaming adds variables that can hide a local configuration error. Once the local session is reliable, you can decide whether Internet access is worth the additional setup and risk.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Set resolution, frame rate and bitrate methodically
Start with a moderate mode rather than immediately selecting the highest output your display accepts. For Moonlight, 720p/60fps is an example configuration documented in a tutorial, while 30fps was also tried on that author’s network. Treat those numbers as setup examples rather than performance claims for your hardware.
- Begin at 720p and 60fps if the stream is stable and the display suits that resolution.
- If the picture stutters or controls feel inconsistent, lower the frame rate or resolution first.
- Reduce bitrate when the network cannot sustain the selected mode.
- Change one setting at a time and replay the same section of the game so you can identify which change helped.
- Raise quality gradually only after the cabinet remains responsive for a full session.
There is no authoritative latency benchmark for this exact DOS-cabinet arrangement. Responsiveness depends on the host, encoder, network path, selected mode and display, so measure success by repeatable play in your own cabinet rather than by a promised number.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesTroubleshoot by symptom
The Pi cannot find or pair with the host
- Confirm that both devices are on the same local network, not isolated guest networks.
- For Steam Link, verify that Steam is signed in and running on the host.
- For Moonlight, try the host’s local IP address and complete pairing locally before attempting remote access.
- Check that the host streaming software is running and that a desktop or launcher is exposed.
- Restart the client and host after correcting the network or streaming service, then pair again.
The stream stutters
- Test Ethernet between the host and Pi before changing emulator settings.
- If you are using Wi-Fi, move the Pi or access point closer and remove competing traffic during the test.
- Lower resolution, frame rate or bitrate.
- Check whether the host is busy running another application or encoding workload.
- Repeat the test on the same local network so remote-network variability is not part of the diagnosis.
The picture is visible but controls do nothing
- Verify that the Pi detects the encoder before launching the game.
- Check that each encoder input produces the intended keyboard or gamepad event.
- Confirm the host receives every direction and button through the streaming client.
- Review the DOS game’s expected key or gamepad mapping.
- Test one control at a time, then test combinations such as movement plus fire.
Audio is missing
Check the HDMI or micro-HDMI connection and the display’s audio path. Raspberry Pi models with HDMI support can carry audio over HDMI, but the display or amplifier must also be configured to use that signal.
The DOS title will not start from the client
Launch the emulator and game directly on the host first. For Steam Link, confirm that a non-Steam shortcut points to a host command that actually starts the title. For Moonlight, confirm that the selected desktop or launcher can open the emulator and that the host-side streaming software exposes it.
Which setup should you build?
Choose Steam Link when
- Your DOS games are already in Steam or can be added as non-Steam shortcuts.
- You want the cabinet to open into a Steam-oriented library interface.
- You are using a Pi 3 or newer and prefer the documented package installation with
sudo apt updateandsudo apt install steamlink.
Choose Moonlight when
- You have a Raspberry Pi 4 and want an officially listed Moonlight client.
- You need to select a host desktop or a general game launcher.
- You want direct client controls for resolution, bitrate and frame rate.
- You are comfortable pairing by local host IP and configuring compatible host streaming software.
Use both when your library is mixed
A cabinet does not have to be locked to one client. Steam Link can cover titles managed through Steam, while Moonlight can cover a host-desktop workflow. Keep the host PC, network and encoder mapping consistent, and select the client that provides the cleanest launch path for each game.
A reliable first-session checklist
- Boot the Pi and confirm the display and audio connection.
- Connect the host and Pi by Ethernet if possible.
- Start the host emulator, launcher or streaming service and verify the DOS game runs locally.
- Open Steam Link or Moonlight on the Pi and complete local pairing.
- Confirm the encoder appears as a keyboard or gamepad.
- Launch the game and test every cabinet direction and button.
- Play for several minutes before mounting the Pi or hiding the network cable.
- If stutter appears, test Ethernet and lower stream settings before changing unrelated game options.
Final verdict
Streaming is the practical way to put DOS games in a Raspberry Pi arcade cabinet when you already have a Windows or Linux gaming PC. The Pi handles the cabinet interface; the host handles emulation and rendering. Use Steam Link for the most direct Steam and non-Steam-shortcut workflow, or use Moonlight on a Raspberry Pi 4 when a host desktop or launcher and adjustable stream settings matter more. Whichever route you choose, wired networking and a carefully tested encoder mapping will do more for playability than simply choosing a higher video setting.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

