Saturday 30 January 2016

Setting up KallistiOS on Fedora

KallistiOS (or KOS for short) is the open source SDK for Dreamcast development. It can be a little tricky to understand the installation process so I'm just explaining it here, this is more for my own benefit than anything.

There are instructions for configuring KallisitiOS on the website, but they are focused on installing globally in /opt/ whereas I'm going to explain how to setup KOS in your home folder.

Friday 29 January 2016

An Update on those Line Voltage Inducer Cables

I mentioned on the Dreamcast Junkyard Podcast that I was intending to build and sell some special phone cables which add the required voltage for a Dreamcast to connect with a DreamPi setup - official DreamPi cables if you will. At the time I was waiting for a test run of PCBs to arrive, and they have!

There are some minor issues with this PCB revision, but I have a working cable, here it is in all its glory:

As you can see, the power comes directly from the Raspberry Pi itself providing you have a spare USB socket. I've been forced to test this by playing PSO online for an hour, and I can confirm that the circuit works perfectly!

So straight onto manufacturing right? Well.. not quite.

Firstly, obviously I don't intend to sell cables with exposed circuitry, so before I sell any cables I need to get some boxes 3D printed. But more importantly, I think I can do better than this.

I think it should be possible to create an adapter box that plugs directly into the Dreamcast, leaving you to just connect any standard modem cable. Not only will this be more robust, but also be quicker and cheaper for me to manufacture (the cable costs £3-4 alone for a decent one).

The next revision of boards I send off will probably an attempt at this, and as end-to-end design, manufacture, shipping, soldering and testing takes about 3 weeks, I'm afraid I won't be shipping these for a little while.

Still, I've proven that it works, and this is a thing I can build. I'll keep you all updated!

P.S. This has all only been possible because of the electrical know-how of my mate Rob!

Monday 25 January 2016

DreamPi 1.2 Released!

This is a bug fix release:

  • Pi to Modem communication now uses a fixed-baud speed. This will hopefully fix some issues that people were having sending commands to the modem but I'm not sure.
  • Earlier disconnection. The software now disconnects from the modem as soon as the handover to PPP is complete, this should allow for a faster disconnect/reconnect cycle when you finish a game and avoid the DreamPi software interfering with PPP.
  • More reliable startup. Occasionally there was an error on startup while detecting the modem. Now this will be caught and will fall back to ttyACM0 rather than crashing. A better fix would be to wait until the modem is ready - this will happen in a later release.
You can download the new release here.

Thursday 21 January 2016

DreamPi 1.1 with Dreamcast Now! Released

I'm happy to announce that version 1.1 of the DreamPi software image is now available. This release introduces the Dreamcast Now! service (as discussed here) and also lays the foundations for a web-based configuration system.

As this release introduces some new features, this is probably a more unstable release than 1.0. 

Once you have the new image up and running on your Raspberry Pi, you should head over to to configure the Dreamcast Now! service.

This release also includes updated firmware for the Raspberry Pi and so it should now run on the PiZero.

Keep an eye on this blog for more updates! Lots more exciting things in the works!

Download the new release here!

Tuesday 5 January 2016

Announcing Dreamcast Now!

I'm excited to announce a new feature of the DreamPi software which will be coming in the unstable 1.1 release!

Dreamcast Now! is a new service which allows players to see which and how many DreamPi users are online, and also what they are playing. You can preview the Dreamcast Now! service at the rather spectacular URL:

It looks something like this (on mobile):

But there's more! I'm working closely with the team to provide a level of integration with their site which will allow you to see who's online without ever leaving the confines of the Dreamcast.

I'll also be providing user-specific URLs for widgets that can be embedded in forum signatures to show when you are online.

I hope to release this over the next couple of weeks, a few select testers will be receiving test DreamPi images over the next few days so keep an eye on the page for online gamers!

How does it work (technical stuff ahead)?


It's all just a little bit clever. On boot a unique identifier is generated from your Raspberry Pi, this is your secret key which allows the service to know which DreamPi is online. When you connect to an online game, the DreamPi sends a message to the Dreamcast Now! service indicating that the user with that unique identifier came online. This is all pretty much anonymous, the whole communication happens securely over SSL and the only thing that is sent is the Pi's unique ID.

Once the game is connected, the first thing it will do is perform a DNS lookup for the game's server. The DreamPi software watches for the domain query, creates a non-reversable hash of the domain (using SHA256) and sends this to the server. Again, this is all over SSL and the server has no way of knowing what the domain was unless it happens to match one of the game domain hashes we have on the server. These domain hashes are never stored.

This is how the server detects when a DreamPi comes online and what game is being played.

What about usernames and profile images?

These are entirely optional. If you don't do anything you'll get an auto-generated username (e.g. Unnamed_12345) and just a default profile image will be shown. However it will be possible to browse to the DreamPi's IP address in your browser (e.g. dreampi.local) and enter a username, and a Gravatar email. The email is MD5 hashed before being sent to the server, the only data sent to the server that isn't just a hash value is the username. Usernames are not permanent, you "lease" them. They are associated with your DreamPi's unique ID but if you fail to go online for 30 days then they are free to be associated with another DreamPi. This is necessary so that if your DreamPi breaks, you'll be able to regain your username after 30 days by associating it with another DreamPi.

I don't like the sound of this, can I disable it?

Yes. It can be switched off from the same page you configure your username. It will be enabled by default though.