Skip Navigation

Game Console Project

For this project option, you will create a custom game console using a computer system or single board computer (such as a Raspberry Pi). You will configure this system with a ten foot user interface and a game controller so that you can play games on your TV while sitting on your couch.

Page Contents

Required Technology

To be able to complete this project successfully, you will need:

Recommended software:

Please note that this project option is NOT recommended under the following circumstances:

An older laptop or desktop computer is sufficient for running Linux, and switching it over to Linux is a great way to reuse old hardware. However, if the system is positively ancient and can only run 32-bit software, then you will likely need to choose Slackware as your distribution for this project.

Background

If you buy a modern game console, it is full of tracking and advertising. The PS5 collects and reports user data to Sony. Nintendo Switch users are only marginally better off in comparison, and trying to take back some control may lead to bans. The Xbox X|S is probably the worst of the three major consoles, which isn’t at all surprising given the state of Windows 11.

Fortunately, it’s still possible to have a game console and maintain some degree of privacy at the same time by building one. Several purpose-built approaches are possible, including the use of a single board computer like a Raspberry Pi or specifying and building a dedicated computer (often in a Mini-ITX or similar form factor with quiet fans). However, if you happen to have an old desktop or laptop computer lying around, this is one good way to repurpose it and give it some extra useful life instead of sending it to a landfill.

Obviously, the choice of hardware will limit what kinds of games can be played: a single board computer or really old desktop or laptop is probably good for 2D casual games and running emulators for consoles from the 1990s and earlier. Some open source games will also run on older or less powerful hardware. At the opposite extreme, a purpose-built PC with a modern dedicated GPU can handle even the most demanding commercial titles from Steam. As an added bonus, the Linux environment configured on most of these systems can be used for other purposes, like surfing the Internet from your couch or watching streaming video.

Not all Linux distributions are created equal, and there are fundamental tradeoffs between distributions and software stacks. One worrisome trend from the commercialization of Linux in recent years has been the emergence of tightly coupled, minimally cohesive software applications and services that cram too many unrelated tasks into a single system process. The poster child for this type of poor system and software engineering is systemd, which is a replacement for init(1) that also does a bunch of completely unrelated tasks.

The fundamental problem with having a tightly coupled software application running in place of init, is that this software occupies a privileged position in the system. It runs as PID 1, which is the first process created directly by the kernel at boot time. As such, this process has root execution privileges and is the direct or indirect ancestor of all other processes on the system. Any bugs in this process can bring down the entire system. Any vulnerabilities in this process can easily compromise the entire system. And systemd has a huge attack surface due to the large collection of unrelated functionality that has been integrated into it. For more detail, see the No systemd website.

Should you choose this project option, your first task will be to identify and select a non-systemd Linux distribution to install on your computer. There are some options linked from the No systemd site in the previous paragraph, but a more comprehensive list may be found at Without Systemd. That said, if the machine you’re using has an x86_64 architecture, I recommend Artix Linux, which is Arch Linux with a choice of init systems other than systemd. Since Valve is shipping Arch Linux (with systemd) on the Steam Deck, it is a pretty good bet that most Steam games should run on Artix (as long as your hardware is powerful enough, of course). If you have a positively ancient computer with a 32-bit x86 processor, Slackware Linux should support it as long as it isn’t from the 1980s or perhaps the early 90s. If you happen to own a Raspberry Pi, then Alpine Linux is likely to work.

In addition to a computer, you will also need a TV and a game controller (see above). On my own system, I find that a wireless keyboard with a built-in touchpad is also helpful to have, since it makes surfing the Internet and performing system administration tasks a bit easier.

You will need to configure a “10 foot user interface” to work with the TV. I have found that KDE Plasma works well if you increase the display scale and use the “application dashboard” launcher. Really any desktop environment will work if you can increase display scaling. Steam has a “big picture” mode for this purpose, and RetroArch uses a 10-foot interface natively. There is also Kodi Media Center, which can be adapted to make an all-in-one console and media box, among other choices.

Project Requirements

A successful implementation of this project:

  1. Boots directly on a laptop, desktop, or single board computer. A virtual machine is NOT suitable for this purpose, as it will not have the required gaming performance.
  2. Has a working 10-foot user interface.
  3. Has a working firewall that blocks access to all incoming ports, except for related and established traffic and for the ICMP packets required for IPv6.
  4. Works with a game controller for input to the video games.
  5. Has a working Firefox browser that can play DRM-encrypted videos from streaming services, has uBlock origin installed, and is configured for privacy.
  6. Can play video games. Open source games are fine for satisfying this requirement, as are console emulators and retro arcade games. Of course, modern 3D titles are also fine if your hardware is powerful enough.
  7. Uses a non-systemd Linux distribution (with the sole exception of esoteric single board computers that can’t easily run anything other than a specific distribution provided or recommended by the manufacturer).
  8. Has a software stack that is built from the ground up. In other words, off-the-shelf console distributions like RetroPie and SteamOS are NOT ALLOWED. Similarly, you may NOT use off-the-shelf media center distributions like LibreELEC or OSMC. As a rule of thumb, if you aren’t doing the system integration (note the title of this course) yourself, it probably isn’t OK.
  9. Is personalized and customized with colors, themes, artwork, wallpaper, or other content of your choosing.

Completion of this project demonstrates the ability to integrate system components to build a video game console.

Specific Rules for This Project

  1. A non-systemd Linux distribution must be used. This requirement is in place for several reasons. First, see the background information about the attack surface of systemd, above. Second, prohibiting systemd eliminates “beginner” distributions like Ubuntu. Finally, on a related note to the previous point, experience with a distribution other than Ubuntu is important to be taken seriously in an interview for a Linux-related position.
  2. It is NOT a requirement that the resulting console be able to run AAA titles with heavy graphics demands. A console based on a weak system that can only play more basic games is perfectly acceptable for this project.
  3. Since consoles typically use game controllers, a controller is required for this project. While an advanced controller such as a PS5 DualSense will provide a better experience, a cheap wired controller from a big box store or online is also perfectly acceptable (as long as it works with Linux).

Academic Integrity Rules

  1. Generally speaking, this project is to be completed INDIVIDUALLY. You may use any Internet source for research purposes, and you may share and receive information through the course forum activity (in fact, sharing information through the forum is a separate requirement of this course). However, you are to implement your own solution to this project and produce your own videos.
  2. You MAY work with another student (or multiple other students) if each of you completes a SEPARATE project option in this course.
  3. If you’re taking this course with your best friend, roommate, family member, or other close associate, it is advisable to choose separate projects to avoid any appearance of questionable activity. As a bonus, you both will learn more.

Milestones

Milestone 1

For Milestone 1, prepare a video presentation that covers the following items:

  1. Identify and show the computer system or single board computer that you will be using for this project.
  2. State what kind of CPU is in the computer, how much RAM it has, and how big the storage device (SSD or hard drive) is.
  3. Identify the non-systemd Linux distribution that you will use for the project.
  4. Identify the exact type of game controller that you will use for the project.

Before submitting, review the Grading Rubric for Milestone 1.

Milestone 2

For Milestone 2, prepare a video presentation that covers the following items:

  1. Show that you have successfully installed the Linux distribution onto the computer.
  2. Demonstrate that you have a working 10-foot user interface that can be viewed on a TV from a couch some distance away.
  3. Demonstrate that you have correctly set up iptables and ip6tables by running the following commands as root and showing the output:
iptables -S
ip6tables -S

Before submitting, review the Grading Rubric for Milestone 2.

Milestone 3

For Milestone 3, prepare a video presentation that covers the following items:

  1. Using your installed system, demonstrate that you can run a video game.
  2. Demonstrate that Firefox is working and has uBlock Origin installed.
  3. Go through the Firefox settings, and show that:
    1. Opening previous tabs/windows is disabled.
    2. Extension and feature recommendations are turned off.
    3. Everything except (optionally) Web search is turned off on the home screen.
    4. A search engine other than Google or Bing (MSN/Microsoft/whatever they’re calling it this week) is configured.
    5. Search suggestions are off.
    6. Cookies are deleted on exit.
    7. History is cleared on exit.
    8. The “shortcuts” feature is disabled.
    9. Telemetry is disabled.
    10. HTTPS-only mode is enabled.
  4. Use about:config to show that the disk cache and browser reset prompt have both been disabled.

Before submitting, review the Grading Rubric for Milestone 3.

Milestone 4

For Milestone 4, prepare a video presentation that covers the following items:

  1. Demonstrate the capabilities of your console over a range of video games.
  2. Explain what your console can and cannot do based on your hardware limitations and software choices.
  3. Show that you have personalized your console operating environment (colors, backgrounds, etc.).

Before submitting, review the Grading Rubric for Milestone 4.

Tips and Resources

Laptop Touchpad Issues

If you’re using a laptop, and you find that touchpad scrolling or tapping stops working randomly, create (as root) a file at /etc/modprobe.d/psmouse.conf with the following contents:

blacklist psmouse

Then reboot and check touchpad operation.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.