I actually went ahead and got DreamPi running on the Zero W a few months ago - I've been meaning to post a guide/firmware image and updated dreampi.py script for a while - just been really busy.
It's honestly not that difficult to setup - first things first load the 1.6 image onto an SD card, then run it up with an older Raspberry Pi, update the OS so that you get the new firmware the Zero W needs, then load it up the Zero W. The real roadblock that I ran into was once I set everything up and tried to go online with PSO (v2) is that it would connect up just fine and then fail when attempting to load the server list. I ended up verifying that everything ought to be working configuration-wise by hooking a hub up to the Zero W and using a WiFi dongle - sure enough no issues, so I thought it was probably a Zero W WiFi driver issue (it wouldn't be the first).
I figured I'd track down the source of the problem so I tried dumping the DC's traffic using tcpdump during the connection process, and magically everything worked. I ended up just creating a simple service that runs tcpdump specifying all source and destination packets from the DC's IP and dumping output to /dev/null which works like a charm. It seems that just having tcpdump running alters the Zero W WiFi driver's behavior in such a way as to fix whatever the problem is. While this would probably be a sub-optimal solution for most use cases since the bandwidth and performance requirements here are so low this hack doesn't appear to cause any problems (I've done 12+ hours of testing and one 3 hour session without any connection issues).
The reason I did the above was primarily because I have a US Robotics 5637 modem (which I managed to hack dreampi.py to support some time ago so myself and a few of my friends could enjoy a PSO nostalgia trip). I took the modem apart and realized there was a ton of free space in the plastic housing - and just enough space to fit an RPi Zero.
- 2.jpg (448.5 KiB) Viewed 14029 times
So I went ahead and bought an RPi Zero W and an adjustable DC-DC boost converter, built a small voltage inducer circuit to go with it (pro-tip: use a diode on the boost converter output), powered it with the USB power lines of the modem, cut one of the phone signal traces on the modem and rerouted the signal through the voltage inducer and back to the RJ-11 jack by way of a solder joint on the underside of the modem PCB. This integrates the voltage inducer and 9V+ power source into the modem itself.
- 5.jpg (234.42 KiB) Viewed 14029 times
I then cut the USB data lines for the modem and soldered them directly to the pads on the Zero W (this required using 12MHz "fast" USB signalling, "full speed" 480MHz signalling does not appreciate being transmitted over random 20-something gauge wires you happen to have laying around in a drawer, the whole USB connection goes NAK crazy). After soldering the USB power input to the Zero W everything can be powered using the modem's USB cable.
- 1.jpg (235.87 KiB) Viewed 14029 times
Once the whole thing is buttoned up it looks exactly like a normal USR5637, and the white color matches the Dreamcast nicely. The only connections required are a phone cable to the DC's modem and a USB power source.
- 3.jpg (114.15 KiB) Viewed 14029 times
This is how it looks now. I have a simple in-line USB power switch that I use to boot and shutdown the DreamPi (I changed the firmware setup to mount everything read-only and use an overlay for updates so that it's safe to turn off at any time without worrying about SD card corruption). I like to call it my Dreamcast's WiFi dongle
.
- 4.jpg (143.4 KiB) Viewed 14029 times
My motivation for all of this was to have a nice looking DreamPi setup that I could leave hooked up and out in the open without it being messy looking.
The only real caveat to the thing is that while it does boot and become operational within about one minute if I connect via PSO immediately I sometimes drop the connection after about 5 minutes. If I wait 5 minutes after powering the device no such connection drops happen even during extended play. So I usually flick the switch, grab a glass of water, then boot up the DC. This issue appears to be modem related (I occasionally observed it before this build) - for some reason my 5637 just likes to have time to "warm up" - which might just be an issue with my particular board.
Once I have a little more time I'll do a full write-up and post modified firmware and dreampi.py scripts (adding support for both the tcpdump service required for the Zero W and USR 5637 support). I set mine up to load the wpa_supplicant config off the FAT32 partition so anyone should be able to simply modify that file and be off to the races with a Zero W.
@kazade
If you'd like to integrate this functionality into the next official DreamPi release I'd love to help.