Powering Up

Here is the finished product hooked up to the TV.

IMG_0395

And it works!

IMG_0396

Here you can see my beautiful custom loading screen which I definitely did not put too much time into making.

And that finishes things up. I have some more software tweaks I want to make, such as setting up an automated system that backs things up to my Linux server, but the hardware portion is now done.

Installation

Now that I have all of the pieces ready it’s time to begin installation. I was originally planning on giving more details on how I fit things into the Dreamcast case but a couple of snags I ran into made the process a bit harder than I initially thought. Instead I’ve decided just show a view of the pieces in their final locations and give a high level description of how I fit them in.

IMG_0394

The panel mount HDMI cable has its jack in the upper, left-hand corner and snakes around to the Pi which is in the front. I put the USB hub on top of it and secured it to the back of the case. My modded AC adapter’s AC jack sits just above HDMI jack and the AC/DC converter box fits on the left-hand side of the case. I have all the other cables running between, over and under these main components.

You’ll see that I have a couple of items attached to the under side of the top section of the case. The black box is one end of that SD card extension cable. I attached it right next to the opening of the CD access lid. This will allow me to access my SD card simply by opening the lid. On the front of the upper section (bottom of the picture) I attached an LED which I connected to the Pi’s 3.3 volt GPIO pin. The LED is fixed to the under side of the Dreamcast’s power light conduit. Thanks to the fact that the Mausberry switch controls power flow into the Pi the LED acts just like a power light on a “real” video game console. As soon as I press the power switch to boot the console the LED with light up. When I shut down the console the light will remain on until shutdown is complete and the Mausberry switch pulls the power.

As you can see I had to do some creative arraignment of the pieces to get them all to fit in but I got the final result I wanted. The only remaining steps is to close the case and turn it on.

Raspberry Pi 2

I think I’ve already found a future upgrade for my emulator. The Raspberry Pi 2 was recently announced. It contains a more powerful CPU and ups the cores from one to four. I’m pretty excited to find out what this new Pi might be able to do with video game emulation. If I’m correct the emulators that the RetroPie Project uses don’t support multiple cores but the fact that the speed of the CPU has been increased should help out. I’ve already seen videos of people using the Pi 2 to play SNES games which use the Super FX Chip as well as N64 games without the video and audio stutter you would see when playing them on the Pi B. I couldn’t tell if the games were running at full speed or not (the videos I saw weren’t exactly professionally filmed) but I still have hope that they might be able to. In the videos I watched the recorders did not claim to have over clocked the CPU. If there is any delay over clocking the Pi 2 might fix the issue.

Even if full N64 emulation isn’t possible I do hope that the Pi 2 will at least be able to handle Super FX SNES games. I was a bit disappointed that I wasn’t able to play some of those games particularly Super Mario RPG.

Another good thing about the Pi 2 is that is has the same layout as the B+. Since the mounting points are in the same place the upgrade should be very simple. I should be able to just crack open the case and slap the new Pi in place.

On a project related note I’ve ordered what I hope to be the last set of cables that I need for my emulator. Once they arrive I should be able to install all the elements in the case. Hopefully I’ll be updating this blog soon.

USB Controller Ports

After a break for the holidays I’m back to work on my project. The next step is installing the USB controller ports.

I mentioned earlier that I’m trying to keep the Dreamcast case as natural looking as possible. With the power and HDMI inputs I feel I was able to pull this off well. On the power side I was able to use the existing AC cord jack and mod it from the inside to connect it to my USB hub. For the HDMI port I was able to use an existing port in the back of the case to install a panel mount HDMI cable. I’d like to go the same direction with the USB ports by fixing them to the inside of the controller port panel.

IMG_0386

If I can pull this off right it will really help to make the emulator feel like a legitimate video game console. I’ll be able to plug in my controllers by inserting them into the case’s original controller ports.

Before I get started on this though I had to find the right USB cables. Since I am ordering them online and am unable to see them in person I decided to start by purchasing just one cable to make sure the brand/model I ordered would work for me. The USB hub I am using already takes up quite a lot of space in the case. In order to cut down on the extra space taken up by the cords running into it I purchased a right angle USB cable.

IMG_0385

My initial plan was to cut back the rubber guard from the female end of the cable and expose the metal area surrounding the USB jack. I would then insert the exposed jack through the controller port. As part of this plan I would have to widen the controller port horizontally in order to fit the jack into the port. I went on and cut back the rubber guard on the cable. Before installing it grabbed a couple of USB cords and tried plugging them into the jack through the controller port just to see how close to the front of the panel the jack would need to sit. When I did this I realized that I had enough slack to leave the jack on the inner side of the panel. I didn’t actually need to widen the port and install the jack inside of it. I was happy with that outcome. I ruined a USB cable in the process but found out that I did not need to do any case modifications for this step. This would be another way I would be able to preserve the original look of the case.

I was happy with the type of USB cable I found so I ordered four more like it (one for each controller port). Before installing the cables I needed to make sure that everything would fit into the case. When I first purchased the Dreamcast case it seemed like I had more than enough space. However, after buying all the parts and trying different ways of inserting them into the case I quickly realized that space was going to be a very precious commodity. Unfortunately after plugging all four controllers into the hub I found that I just didn’t have enough room for all of them. I was going to have to cut it back to two. By using two cables I would be able to use only the USB ports on one side of the hub which would allow me to put the other side flush against the back wall of the case. Without doing this I simply wouldn’t have enough room for the other elements. The good thing is that this isn’t too big a loss. I seriously doubt I’ll be using any more than two controllers anyway. It is a shame to not use all four controller ports though…

For my second installation attempt I decided to cut the cable’s rubber guard back and make it flush with the front of the USB jack.

IMG_0389

Next I would need to attach the cable to the back of the panel. I found that the controller port panel was made of ABS plastic. I did some research on how to glue a non-ABS material to ABS but didn’t find anything other than suggestions to use super glue. I decided I’d give it a try. Fortunately it seems to have worked. I attached just one to start off with. It seemed solid enough even when plugging and unplugging USB cables into it so I went on and attached the second one.

IMG_0392

This step took some trial and error but I think it came out well in the end. The final step will be inserting all of the elements in the case and fixing them into place.

HDMI Port

Now that the power supply is ready I decided to move along to the HDMI port. I purchased this panel mount cable for the job.

IMG_0374

I picked the Serial port on the back of the Dreamcast case and drilled two holes for the screws.

IMG_0380

The cable fit in great.

IMG_0381

IMG_0384

This step ended up being much simpler than the power unit. The only thing that worries me at this point is getting all of the elements to fit into the case. I was hoping to use the AV Out port on the case to hold the HDMI connector but it ended up being too wide. The Serial fits the connector perfectly but it sits just beneath the power cord port. I might have to get creative with the arraignment of the AC adapter (and the other parts) when I begin installing them.

Well, that sums up the HDMI port step. The next step will be the installation of the USB cables. I’d like to fasten them to the controller ports on the front of the box. This will allow me to plug my USB controllers into the front which will help me to preserve the original look and feel of the case. To do this though I’m going to have to find some USB cables whose female ends will fit into the controller ports. I’ll probably have to buy a couple of test cables to find the correct one for me.

Power Supply

The first two phases of my project are complete. The emulator software is running on my Pi and I’ve prototyped the basic hardware elements. Now I’m moving on to the last and potentially hardest part of the project. Installing all of the project’s elements into my Dreamcast case. I say this is the hardest part because hardware work like this isn’t something I have much experience in. Fortunately I have the internet to help me out.

I’ve been considering for a while where to start with the case installation. I finally decided I would start with the power supply. One of my main goals with this project is to keep the Dreamcast case looking as natural as possible. I’d like to avoid making too many external modifications and instead try to use the existing features (e.g. ports for cable inputs) as much as possible. For this reason I have decided to use the existing power jack and mod it from the inside so I can pass the power from it into my hub’s AC adapter. The Dreamcast uses a standard AC cable that passes power into a board which, I assume, acts as an AC to DC power converter. Here’s a picture of board that came with my Dreamcast case:

IMG_0360

The jack is designed to fit perfectly into the case. If I can make this work correctly it will really help to make the case look as natural as possible.

The first step is to remove the jack from the board. Desoldering it was fairly simple.

IMG_0366

It’s kind of difficult to see in the picture but the jack has a couple of contacts at the back that extend down and were soldered onto the board. Fortunately they are long enough for me to work with. The jack continues to sit solidly into the case even with the board removed.

IMG_0367

The next step is to open up the wall wart style AC converter that came with the powered USB hub. There aren’t any screws on it so I had to resort to brute force. I found a couple of sites that had how-to’s on opening these (you really can find anything on the internet…) and they recommended inserting a knife into the groove between the two halves of the case and using a hammer to crack open the case. It worked:

IMG_0370

I clipped the wires that were running to the plug’s contacts and then removed the contacts.

IMG_0371

Next I drilled a hole in the upper half of the case to route the wires.

IMG_0372

Finally I soldered the wires to the Dreamcast AC jack. It looks like I pulled it off. When I plugged in the cable my hub powered up.

IMG_0373

I’m glad it did. This was not an especially simple part of the project since soldering isn’t my greatest skill. Now that this part is done I feel I’ve made some real progress on the installation.

Time to plan for the next step.

Component Tests

Now that the software part of my project is done I’m moving on to the prototyping stage. I’m beginning by testing a couple of the components I purchased. The first is this powered USB hub. In addition to allowing me attach more devices to my Pi it can also power it. This will allow me to run a single power line into my case rather than two (one of the Pi and a second for a powered hub).

IMG_0354

I plugged it in and it worked just fine. It successfully powered the Pi and the Pi was able to recognize devices I plugged into the hub.

The next item to test is my shutdown circuit. As anyone who has used a Raspberry Pi is aware it does not have a power button. To power it on you plug in a power source. Shutting it down is a bit more complex though since you have to send a shutdown signal to the OS and allow it to power down before removing the power. I don’t want to deal with that process once I get the Pi installed in my case so I ordered this shutdown switch from Mausberry Circuits. This circuit sits in between the power source and the Pi and connects to an external switch. When the switch is closed the circuit passes the power along to the Pi which allows it to boot. When the switch is opened the circuit sends a shutdown signal to the Pi via GPIO which tells it to shut down the OS. Once the shutdown process is complete the circuit removes power from the Pi. Ultimately I want to attach this circuit to my Dreamcast case’s power switch but for now I’ll just test it by wiring it to a breadboard.

Before I actually wire up the circuit I need to install the program that will watch the GPIO for the circuit’s shutdown signal. Mausberry Circuits provides a bash script that will do this using a while loop to pole the GPIO. However, I’ve heard some complaints that this continuously running loop can steal system resources. After some research I ran across this Python program. It is programmed to wait for the shutdown signal from the GPIO rather than polling the GPIO constantly to see if the signal has been sent.

I’ve installed the program and wired up the circuit. It’s time to test it.

IMG_0357

And it works! When I close the switch the Pi boots. When I open the switch the shutdown signal is being interpreted correctly and power is removed when the shutdown is complete.

Two of the main items I chose to run my project are working like I wanted. Time to move on to the next step.