Internalized DreamPi adapter
This will become a more thorough tutorial at a later point, but here is a work-in-progress basic rundown. Forum post: https://dcemulation.org/phpBB/viewtopic.php?f=31&t=105525
I used a kiosk Dreamcast's dummy modem shell for this mod so that I wouldn't have a port on the back. These are obviously going to be difficult to come across, so you'll have to use a regular modem shell with a hole in it, and cosmetically doctor the hole somehow. Maybe a 3D printed snap-in panel?
Stuff you'll need
In order to do this, you need:
- a Dreamcast modem (I used a revision A U.S. modem)
- Dell NW147/Conexant RD02-D400 USB modem
- DC step up board (like https://amazon.com/gp/product/B011EBSKK0)
- 0.47uF capacitor
- 380ohm resistor
You can get away with other values for the cap and resistor, I used 1uF and 330ohm because that's what I had. You'll also need:
- some kind of plastic glue (I used Gorilla Glue)
- 3mm diameter plastic washer (like https://www.boltdepot.com/Product-Details.aspx?product=15944)
- 5mm thick plastic spacer (like https://www.boltdepot.com/Product-Details.aspx?product=13772)
You of course will need a multimeter, a soldering iron, flush cutters, etc. -- basic modding tools.
Before you get started, make sure you set up your RPI with DreamPi as usual and make sure it works, your WiFi credentials are correct, etc. You don't want to have to troubleshoot DreamPi issues after you've cut everything up and made a million more variables for failure.
Using flush cutters, break out all the plastic supports except the leftmost screw post and the two short plastic posts on the far right. Glue the 1mm washer to the screwpost you left, and glue the two 5mm plastic spacers to the far right posts you left. After the glue dries, you can place the Dreamcast modem's PCB (discarding the part of the metal shell that typically sits there) on top of the spacers and see that it stands off evenly from the plastic and you can see quite a bit of space inside for the DreamPi stuff if you get creative enough.
Now you need to miniaturize your components. Everything that uses a plug or jack will now need to be direct wired by soldering to points on PCBs.
Here is a picture I took while constructing mine, showing the USB modem, although parts of it are covered with tape in this pic: https://imgur.com/w3tTsRd
- Desolder and remove the telephone jack. Take note of how the two pins left correspond to the two wires in a telephone line.
- Pins 1, 2, 3, and 4 on the Dreamcast connector are all +5V.
- Using your multimeter, identify +5V, ground, and the two telephone wire points on the exterior side of the modem.
- Desolder and remove the telephone jack. Like the Dreamcast modem, take note of how the pins correspond to the two wires in a telephone line.
- Desolder and remove the USB connector. Remember red wire is +5V, black wire is ground, green wire is data+, white wire is data-.
- There are two blue capacitors on the board that make this board too thick to fit. Remove both capacitors, solder wires to the 4 points where the capacitors used to be, and solder to the capacitors to the wires, so that you can stuff these capacitors in an open spot in the modem. You might be able to find surface mount tiny replacement capacitors instead, but I didn't feel like doing that and just extended them and stuffed them away. There's enough space for it.
DC step up board
- This board is to apply the voltage to the 'telephone line' so the modem sees it as an active telephone line. Apply 5V and ground to this board and use your multimeter to tweak the voltage setting on the screw. I used 9V for my U.S. modem, but PAL modems need 18V.
- Desolder and remove the microUSB plug on this board. It might not seem like much but I was able to get some needed space by doing this.
- Take note that on the input side, the board needs +5V and ground, and the output side will be for the capacitor, resistor, and one of the telephone lines in and out.
- You don't need to desolder anything from this board. On the bottom, you'll see PP1 is +5V, PP6 is ground, PP22 is USB D+, and PP23 is USB D-. Identify and remember these points.
Take your time with this, plan out how you want to connect everything, make sure everything is going to fit as you do it. Make sure that you don't glue anything against the edges of the plastic as the metal shielding will slide in there when you put it back together. This is just a list of what you're doing, not necessarily in any particular order:
- Use the 5V and ground points you identified on the Dreamcast modem to supply 5V and ground to the RPi, the USB modem, and the DC transformer input.
- Connect the D+ and D- points on the USB modem board to the D+ and D- points on the RPi.
- Voltage inducement: Observe the following image that shows the construction of a battery-based line voltage inducer: https://imgur.com/W4r18Ph
Using this as a reference, with the battery connection terminals representing the V+ and V- output side of the DC transformer, construct the line voltage inducement circuit. The telephone line is like a circular loop: Pin 1 from the Dreamcast modem goes through this circuit to add voltage and connects to pin 2 on the USB modem; pin 1 on the USB modem directly connects to the pin 2 on the Dreamcast modem. A better, more illustrated diagram will come later.
Here is what mine looked like after soldering was finished and I determined the whole thing worked, but I hadn't put it together yet: https://i.imgur.com/RFgUa3Q.jpg The image is very messy as it was taken after running into a few snags and having to rip it apart and put it back together again. But what you see in the image works perfectly.
You may want to use electrical tape or some other insulator to protect the boards from one another. I just put strips of electrical tape securely on the RPi. Place the RPi board on top of the USB modem, and then place the Dreamcast modem on top of the plastic standoffs. Carefully replace the metal shielding. You will then screw this together using the one remaining screw post you didn't remove. The left side will be secure, while the right side will be slightly coming apart. Using some tape, very tightly apply tape the right side corner. You want the tape to be tight because if you loosely tape this, your DreamWiFi will slightly protrude from the console 1-2mm. It won't affect the function, but aren't you doing all this work so everything looks cool?
Note that there is a gap in time from the moment that the Dreamcast is powered on until the DreamPi is successfully booted and ready to accept incoming telephone connections. I timed this to be roughly 1 min 25 secs. So make sure you don't speed straight into your favorite game and dial right away or you'll get a few failures to connect until 1:25 has passed since the power button was pressed. In reality this isn't that big of an issue.
I was able to sit in Phantasy Star Online for about 30 mins and the core temp of the Pi as measured over SSH did not exceed 59 C. I don't know how how this could get for many hours at maximum load, but top over SSH showed that the RPi sat around 50% idle when connected to an online game, so I don't believe the temperature would get up to dangerous levels. Update on this part: I left the DC on for 10 hours at the PSO title screen loop to get all nice and warm, then came back to it and connected to PSO and basically sat in the lobby connected for an hour and a half, while also pinging the Dreamcast's IP over and over from my desktop computer. The temperature so far has not gotten above 65.9 C, and mostly lingers around 64-65 now. I haven't had any packets dropped while pinging all this time. I'm pretty confident the temperatures and performance will be safe long term.