DreamPi DX
NOOBS Image
Background information about DreamPi
The Sega Dreamcast was quite innovative for its time. One major selling point and unique feature for the console during its tragically short, but glorious lifespan was the inclusion of a built-in 56k dial-up internet modem, making the Sega Dreamcast the first home video game console to have online support out-of-the-box. The modem could be upgraded to a Broadband Adapter (BBA) for a higher speed, larger bandwidth DSL internet connection; however, these units are rare, in high-demand, and expensive (even today on eBay). With the 56k modem, players could surf the web using a dial-up connection and Dreamcast web browsers such as PlanetWeb (or likewise could use a DSL connection with the BBA). Most of these web browsers also allowed players to read and send email. Moreover, many games supported online features, such as online multiplayer, leaderboards, and the ability to download DLC to the VMU memory card for usage in-game.
Despite the Sega Dreamcast being discontinued prematurely in 2001, many of the game servers stayed online for a few years afterwards. Eventually, however, as the Sega Dreamcast grew older and less socially relevant, all of the games' official servers were retired offline. Recently there have been many online Dreamcast games whose inner workings have been reverse-engineered, and private servers created to resurrect their online functionality. Despite this, however, nowadays with the advent of newer online connection types (such as DSL, fiber, etc), real landline dial-up connections to use with the default 56k modem are becoming obsolete and it is getting much harder to find ISPs who can actually offer a bonafide dial-up connection, while the BBA adapter (for usage with DSL connections) is still rare and expensive.
Enter DreamPi
In order to create a standardized, modern set of hardware to allow players to connect their Dreamcasts to the internet and applicable games to their respective resurrected game servers, a fellow named "Kazade" created the DreamPi. It is a customized Debian-based Linux distro that runs on a Raspberry Pi Model 2 or 3, which will allow a Dreamcast to connect online via a modern-day RJ45 Ethernet or WiFi connection.
A DreamPi setup consists of the following:
Raspberry Pi (Model 2, 3, or 4)
DreamPi distro
Linux-Compatible USB Modem
RJ11 Phone cord
If the USB Modem or Dreamcast modem model requires voltage on the modem connection
Internet connection
Via RJ45 connection
Required for Model 2 RPis
Via WiFi access point
Via WiFi dongle
Via built-in WiFi (Model 3 and 4 RPi)
With the DreamPi software and the USB modem setup, the DreamPi will answer to the Dreamcast's dial-up calls, and allow it to connect to the internet! The Dreamcast Now website displays which players are currently online with registered DreamPis and for what games. Furthermore, a DreamPi can be used to get other dial-up based consoles and computers back online for surfing the web, such as a Sega Saturn. With a DreamPi, the Sega Saturn can browse online with a PlanetWeb web browser and NetLink modem cartridge, or browse the resurrected NetLink Zones for Netlink-enabled games. (More information about surfing the NetLink Zones via the DreamPi on the Sega Saturn available here).
One minor disadvantage of the DreamPi distro, however, is that it is not NOOBS compatible; the distro must be installed directly to the SD Card by writing the image to it, meaning that one cannot partition the SD Card easily for multi-booting of several Linux-based distros on the SD card. Enter DreamPi NOOBS Image!
"Industrial Strength" LVI
For those who want to build a DIY LVI, but who struggle with soldering, or for those whom hate dealing with tiny, stranded, standard RJ11 wire (22-24 AWG gauge), I've detailed a polished "Industrial-Strength" LVI you can build. This LVI consists of the standard electronics (resistor, capacitor, 9V battery and clip), but also 2 RJ11 wall plates with wired spade connectors, which help breakout the signals into something more manageable. Everything is installed onto a dedicated breadboard, and into a small metal craft tin.
Full details at the DC-Talk forum thread, or my blog post.
DIY Dreamcast BBA Adapter
You can create your own DIY Dreamcast BBA (Broadband) adapter by using an Atomiswave Communication Cartridge and Xrider's converter kit for high-speed, modern broadband internet connection (RJ45 Ethernet). This is usually cheaper than a real BBA. Some assembly and soldering required!
Dreamcast Now Companion App
PC users (Windows, Linux, Mac) can alternatively find online players via the Dreamcast Now Companion App. It allows you to see whom is playing online in real-time, as well as to view their game library. You can also be notified when players that you have favorited go on/offline.
DreamPi NOOBS image
The easiest way to setup a new Raspberry Pi is to install a bootloader software known as NOOBS (New Out Of Box Software).
NOOBS comes in 2 versions:
Full-version
Has a few Linux distros available locally for installation from the SD Card
Allows installing other Distros from an online server
Lite version
Only allows the user to install a few Linux distros from the online server
NOOBS is run when the Raspberry Pi boots, allows one to install various operating systems in such a way to allow multi-booting, and allows the user to select which OS to run. All the user needs to do to install either is to plop the contents of the NOOBS download to the root of the designated SD Card (formatted to FAT32) for the Raspberry Pi. On first boot, the NOOBS bootloader will create a primary FAT32 partition sized appropriately to contain the NOOBS bootloader files and local OSes (if any) for installation on the SD Card's root folder; afterwards, the user can select what OSes to install (either locally from this partition in the "os" folder for the full-version, or online for the lite-version from the online server for various officially-sponsored distros). The lite-version can only install OSes from the online server. Installing OSes via NOOBS allows for multi-boot capabilities.
A much better alternative to NOOBS is PINN (PINN Is Not NOOBS), which I highly recommend using over NOOBS.
PINN is based off of NOOBS, has the same features as NOOBS, and also has the following enhancements such as:
Various ways to install OSes
Install from SD Card (offline)
Install from online repository (with a wider variety of OSes)
External Media support for OS installation
USB Flash Drive
External SD Card via a USB SD Card reader
Install special partition types
Install additional 512MB ext4 Data partitions
For general data usage
Reserve empty partitions ("project spaces")
For future OS installs
Partition handling features
Download and archive to the SD Card the OSes from the online server, for offline installation
Easily reinstall OSes if something goes wrong
Without having to redo a fresh NOOBS/PINN setup
Replacement and upgrading of OS partitions
Dual-PINN firmware support to handle OSes for Pre-Raspberry Pi Model 3B+ model and later
Various maintenance capabilities
OS maintenance utility
Recovery shell
SD card clone utility
Password restorer
File System Checker
And much more!
To allow easy setup of a DreamPi distro on a Raspberry Pi (with multi-boot capabilities for other OSes), I have a created a NOOBS/PINN-compatible DreamPi image, based against the latest version of DreamPi. This image has its own OS icon and slideshow images too when installing!
About DreamPi DX NOOBS image
This image is a deluxe (DX) version of the stock DreamPi image (v1.7 DLE) with various community addon patches pre-installed:
DreamPi Netlink Tunneler for Netlink (Sega Saturn)
Allows for web browsing, Netlink Zone/features, dialup gameplay for applicable Sega Saturn Netlink/XBand/modem games
Dreamcast Now for BBA
Allows DreamPi to appear on Dreamcast Now service when using a BBA connection
Usage
Login in to DreamPi, run . /home/pi/dreampi/dreampi_now.ksh
Select the game ID
Wi-Fi to Ethernet bridge (BBA)
If the DreamPi is using WiFi connection for internet and Dreamcast is using a BBA, allows to repeat/bridge highspeed broadband connection to the Dreamcast
Usage
Login into DreamPi
Run . /home/pi/wifi-to-eth-route.sh
Other addons for DreamPi:
DreamPi Wi-Fi Setup Wizard
To use a wireless connection with your DreamPi
Use either a Linux-compatible USB WiFi dongle
ORRaspberry Pi's built-in WiFi connectivity (if avilable on your model)
Usage
Login into DreamPi
Run sudo wificonfig
Web Rendering Proxy (requires manual installation; see warning)
Addon to allow retro dial-up/broadband game consoles (Sega Dreamcast, Saturn)and PCs to browse the modern web
Warning
Will expand distro partition space
to consume leftover SD card space!
Installation
How to install DreamPi via NOOBS/PINN
If modifying an existing NOOBS/PINN setup, it is highly recommended to backup the SD Card first!
Upgrading an existing DreamPi partition from
an older NOOBS image to a newer
on an existing PINN setupSuch as upgrading DreamPi NOOBS image from v1.6 to v1.7
If your version of PINN does not have a "replace [OS]" feature in the maintenance menu, please upgrade PINN to the latest version
Feature added after around PINN v2.4.5 (Feb 2018)
Feature is necessary to upgrade the DreamPi partition!
Upgrade PINN
Online update feature
OR
Manual install
Copy all files/folders from new PINN zip folder onto SD card except Recovery.cmdline
Recovery.cmdline on a fresh PINN install "includes the 'runinstaller' option by default.
WARNING: If you DO copy recovery.cmdline by mistake, it will wipe out all your existing installed operating systems due to the runinstaller option!
If upgrading an existing PINN system, please check recovery.cmdline does not include the 'runinstaller' option."
Extract the contents of the newer DreamPi NOOBs image archive onto the root of an external medium
USB Stick
ORUSB SD Card Reader+SD Card
Boot into PINN with the external medium inserted
DreamPi OS entry should say "[NEW VERSION]" and have an USB icon
Click "More (m)" button to navigate to the "Maintenance" menu
Check "DreamPi" OS and click "Replace"
Select the new DreamPi image to replace the old partition in the dialog box that appears
Click "OK"
A warning dialog box shall appear warning you that all data on the DreamPi partition will be deleted during the OS replacement. Click "Yes" if you wish to continue.
Let the latest DreamPi image replace the old partition
Done!
Setting up a new SD Card
Format the SD Card to FAT32
This will erase all data on it!
Download latest version of either
PINN (highly recommended)
Put the contents of the download onto the root of the SD Card
Download my DreamPi NOOBS compatible image below
Extract the contents from my download onto the root of the SD card; overwrite any files/folders.
Also copy the folders for any additional NOOBS-compatible OS images there too (for NOOBS setup, if necessary)
To quote the PINN documentation:
"Make sure to add any OSes to the /os/ folder before you boot [NOOBS/PINN] in [an] RPi for the first time. Otherwise you will find the partition has been shrunk to its minimum size and there will be no room to add any more OSes to the card later."
Place SD Card into Raspberry Pi, and boot the Pi up
Install the OSes (DreamPi and others)
Important: For NOOBS, make sure you check all of the OSes you want installed at once!
Installing a single OS may wipe any currently existing ones, and you aren't easily able to change OSes installed afterwards!
Enjoy your new multi-boot capabilities!
Setting up an existing SD Card with NOOBS/PINN already installed, and installing DreamPi for the first time (by external media)
NOOBS Lite
Upgrade to either NOOBS Full-version or PINN (recommended), then follow the "Setting up a new SD Card" section.
This is required, because we need offline installation for the DreamPi NOOBS image!
NOOBS Full-version
Follow steps in "Setting up a new SD Card section" for NOOBS setup.
Backup data before doing so, and make sure you either have local access to all OSes
ORUpgrade to superior PINN instalation
PINN
Format USB Stick/external SD Card to FAT32
(if not already; USB Stick/SD Card will be erased!)
Download my DreamPi NOOBS image, extract contents onto the root of USB Stick/external Card
Boot up Pi with USB Stick/USB Card reader+SD Card inserted, install DreamPi
Installing DreamPi (for dual-boot setup in PINN)
DreamPi installation Slideshow
Installing DreamPi (by internet server)
For NOOBS or PINN, you can alternatively install DreamPi NOOBS image via the internet instead of from external media
This has the benefit of auto-updating for when new versions of this image are built and easier maintenance!
Make sure PINN initalizes for the first time before trying (boot up PINN for partition initialization process)
How to access the Tamkis Repos online
PINN
Goto the Maintenance menu
Check "PINN [Fixed]" and highlight it (click the PINN OS)
Click "Edit Config"
Select "recovery.cmdline" tab
Click "Edit Options" button
Click "Source" tab
Option #1
Preferred option
Change alt_image_source to http://raw.githubusercontent.com/Tamk1s/Tamkis_NOOBS_Repo/main/os_list_v3.json
Click OK
Close all windows (Click OK for everything)
Reboot
Have an ethernet or WiFi connection active (connect online)
DreamPi should appear in the Games tab (indicated with an ethernet port icon)
Install DreamPi!
Option #2
Fallback option if option #1 doesn't work, may be more reliable
Temporarily change repo_list from the main PINN repo list to the Tamkis repo list
This option can be more stable and reliable
Set alt_image_source to the URL in repo_list (usually http://raw.githubusercontent.com/procount/pinn-os/master/os/os_list_v3.json by default)
Set repo_list to http://raw.githubusercontent.com/Tamk1s/Tamkis_NOOBS_Repo/main/repo_list.json
Temporarily check "no_default_source" and "showall"
Click OK
Close all windows
Reboot
Have an ethernet or WiFi connection active (connect online)
Only Games tab should appear in distro lists, with DreamPi (indicated with an ethernet port icon)
Install DreamPi!
Restore original repo_list and alt_image_source and tweaked settings above
NOOBS (untested)
Open up recovery.cmdline in a text editor on a PC at the root of the SD card
"Repo=" option
This option contains URLs to repositories to fetch distro images
Consists of URLs enclosed in "quotes" and separated by spaces
(E.g. repo="www.url1.com" "www.url2.com")
Add option if it does not exist or append this URL to list
Boot up raspberry Pi
DreamPi distro should appear in "Games" tab
Install DreamPi from internet!
How to convert stock DreamPi image
into a NOOBS-compatible image
This section is just a quick summary of the technical details for the conversion process, for those curious (and as a note to myself on the process for future ref :P). It is performed for the creation of each NOOBS-compatible image, and is based off the information on this mounting guide and conversion guide. For this quick guide, we'll use the Stock DreamPi v1.7 image as an example ("DreamPi-1.7.img").
Boot up a working Linux environment
Raspbian via PINN on Raspberry Pi preferred
Download the official DreamPi image and extract it onto a USB Stick
Plug USB stick into Linux machine
Open up terminal
Navigate to the directory holding the DreamPi image on the USB Stick within Terminal
Run "fdisk -l DreamPi-1.7.img"
This will list
Size of each sector within the image
Partitions within the image
Starting sector addresses for each partition
Keep all of this data handy
Write down the full size of each partition in MB
Partition size = (size of each sector * amount of sectors)
Mount the 1st partition (boot partition)
This is the smaller FAT32 formatted partition
Run sudo mount -o loop,offset=[offset value] DreamPi-1.7.img /mnt/
For DreamPi v1.7 example
Sector size = 512 bytes
Boot partition starts at sector address 8192
Offset value = (8192 sectors * 512 bytes/sector) = 4194304
Boot partition's contents will be mounted into /mnt/ folder
Archive the mounted filesystem into a tarball ("boot.tar")
Navigate to the folder containing the mounted filesystem ("/mnt/" in example) in Terminal
Run sudo tar - cvpf [path/to/directory/holding_DreamPiImage/onUSBStick]/boot.tar ./*
Write down the filesize of this uncompressed tar file in bytes; save it for later
XZ Compress the tarball into "boot.tar.xz" file
If necessary, install xz-utils package first
Run sudo apt-get install xz-utils
Run xz -9 -e -v boot.tar at the location of the boot.tar file
Unmount the 1st partition
Run sudo umount /mnt/
Mount the 2nd partition (root partition)
This is the larger partition containing the OS' files
Do same actions as with 1st partition, but save tarball as "root.tar" and "root.tar.xz"
Run sudo mount -o loop,offset=[offset value] DreamPi-1.7.img /mnt/
Archive the filesystem into tarball
XZ Compress tarball
Setup a NOOBs folder for the converted image (call it "DreamPi").
This folder should be placed under "[root]/os/" on the external medium, for install later
Move the boot.tar.xz and root.tar.xz files into here
Copy the following files from my DreamPi NOOBS image below into here
os.json
partitions.json
partition_setup.sh
Modify info in os.json
Description
OS name ("DreamPi")
Supported Raspberry Pi models
URL
Modify info in partitions.json
Modify partition_size_nominal for both boot and root
Size of the uncompressed, full partitions in MB
Values which you recorded when running "fdisk" commands
Round up to the nearest MB with some extra MB of padding for spare space!
Modify uncompressed_tarball_size for both boot and root
Size of the uncompressed tarballs in MB
Round up to the nearest MB
Create OS logo
40x40 px png
Named [OS_Name].png ("DreamPi.png")
Place images for the installation slideshow in subfolder "slides_vga"
640x440 px pngs
Named alphabetically
"A.png"
"B.png"
Etc.
Distribute NOOBs image as archive (like I've done)
Done!
How to setup an online repository to host
a NOOBS-compatible image
(for internet downloading from NOOBS/PINN)
An online repository consists of 2 items:
List of URLs pointing to os_list_v3.json files
Contains metadata and URL assets to download data for various NOOBS-compatible distros
The repo_list.json file is setup as such:
In the "repo_list" field, it contains "name" and "URL" fields. The former is used as a name label for the repo_list, while the latter is the URL pointing to an os_list_v3.json file. The fields for each repo entry are enclosed in curly C++-Styled curly {braces}, with a comma (,) between curly brace entries. The os_list_v3.json URLs should be HTTP, and both should have raw file access (hotlinkable URL with no redirection).
Storage of these files on Mediafire and Google Drive links for example will not work for this case. It is highly recommended to place both files on a Github repository, and get the raw url
(e.g. http://raw.githubusercontent.com/[username]/[project]/path_to_folder/os_list_v3.json or
/repo_list.json)
The os_list_v3.json file is setup as such:
It contains the following fields (red fields are unique to the repository setup)
os_name
Name of the distro OS
description
Descriptive string about the OS
Release date
String with when it was released
"YYYY-MM-DD"
supported_models
Supported Raspberry Pi models
url
URL about the distro
Usually for help/info
group
PINN-only
The tab group category the distro belongs to
E.g. "Games"
Use one of the groups as seen within PINN distro listing
download_size
The combined download size of all partition tarballs (usually boot and root, in bytes)
The following are download URLs to various distro assets
The URLs should
Be HTTP
Have raw file access
Hotlinkable URL with minimum redirection
Storage of these files on Mediafire and Google Drive links for example will not work
It is highly recommended to host the files on SourceForge on a project repository and get the download url
E.g. "http://downloads.sourceforge.net/project/project_name/path/filename.ext"
partitions_info
partitions.json file from the distro image
icon
An graphical asset for the distro image
marketing_info
A tarball of the slides_vga assets from the distro used for the installation slideshow
Should be called "marketing.tar"
Tarball should be a flat archive of the assets
Recommended to be compressed with sudo tar - cvpf marketing.tar ./* on the files
partition_setup
partition_setup.sh from the distro image
tarballs
List of URLs to the partition tarballs
Usually root.tar.xz and boot.tar.xz
nominal size
The sum of partition_size_nominal fields from all partitions (usually root and boot) from partitions.json
Once all of the distro files are hosted appropriately online and the os_list_v3.json and repo_list.json files are configured and hosted, the server can then be accessed for downloading! Full details on the JSON fields available here.
To access the server from NOOBS/PINN, please see the "Installing DreamPi (by internet server)" subsection from within the "How to install DreamPi via NOOBS/PINN" section.
Accessing the repo server (summary)
Initalize PINN/NOOBS for the first time prior to access!
PINN
Edit recovery.cmdline in text editor at root of SD card
Option #1
Add an alt_image_source option, point it to URL of os_list_v3.json
E.g. alt_image_source=http://raw.githubusercontent.com/Tamk1s/Tamkis_NOOBS_Repo/main/os_list_v3.json)
Option #2
Temporarily Change stock PINN repo_list to a URL of your repo_list.json file
Add no_default_source and showall options
Reboot, download distros
Restore previous settings
NOOBS (untested)
Edit recovery.cmdline in text editor at root of SD card
Repo="" option
This option contains URLs to repositories to fetch distro images
Consists of URLs enclosed in "quotes" and separated by spaces
E.g. repo="www.url1.com" "www.url2.com"
Add your os_list_v3.json to the option if it does not exist or append this URL to list
Downloads/information:
DreamPi v1.7 DLE NOOBS DX
Compatible Image
(v1.22, 01/02/2023)
Source code (SourceForge)
Tamkis NOOBS Repo
Forum thread
DreamPi resources:
Current game list
Dreamcast Now website
DreamPi Companion App (thread, homepage)
Hardware resources:
"Industrial Strength" LVI (DC-Talk forum thread, blog post)
DIY Dreamcast BBA Adapter
DreamPi DX addon resources:
DreamPi Wi-Fi Setup Wizard
DreamPi Netlink Tunneler for Sega Saturn Netlink (VOIP Guide, DreamPi Patch)
DC Now BBA Patch
Wi-Fi to Ethernet Bridge for BBA Patch
Web Rendering Proxy installation