Click here for home.

Stephanie's ZipIt Web Server - MMC Modification


Description

Knowing that it was possible to wire an MMC card slot into the ZipIt, I had to give it a try. It had to work though the way I wanted it to, so I had some challenges, as far as how I physically mounted the card slot. My requirements were simple:

  • It had to be mounted firmly to the motherboard (not glued to the casing & connected to the motherboard by wires)
  • It had to be a solid and strong mechanical mount so it couldn't work loose or shift and damage things
  • The MMC card had to be accessible without dissassembling the ZipIt so the card could be easily removed for reprogramming etc.
  • The MMC card had to be deep enough into the ZipIt that it would not protrude too far nor be subjected to excessive physical stresses while the ZipIt was being carried or used.

As you will see in the images below, I think I have found the ideal solution.

You can find detailed instructions, annotated pictures, and the mmc.o module in the Pictures and Files area of the ZipIt Yahoo! Group. The hard work here was done by MigraineMan and Cynfab; all I've done is follow the path they laid out.


Warning!

Please Note: The information provided here is for entertainment purposes only. If you attempt to do any of these modifications or if you choose to use any of the software / files provided here, you do so at your own risk. We do not repair ZipIts and accept no responsibility if you use any information here to break your ZipIt.


The Pictures & Details

Warning - the linked pictures are very big and might be slow to download. Please be patient, and remember that the webserver is just a little ZipIt!

ZipIt MMC

Here you can see it - the finished ZipIt, the MMC card is inserted, the ZipIt is up and running.

In addition to the hardware work, I have also created a new filesystem. Using zflash, I have used the loader.bin from OpenZipit; the zimage.dat kernel from burn3; and my own ramdisk.gz filesystem.

My file system uses the rcS and init scripts from Adam's Firmware, with some modifications. The mtd and cramfs modules are not loaded; in their place the mmc.o module is loaded and the MMC card is mounted on /mmc. Then the contents of /mmc/config are overlayed to the root filesystem. By this method, customization and personalizations can be done on the MMC card, so that the internal FlashROM is spared frequent reflashings.

The internal root filesystem contains all the basics and requisites, so if there is no MMC card present, it will boot into a usable ZipIt with default settings.

The idea is that all user applications, data, and configuration settings will be saved on the MMC card, which is easily removed and mounted on a desktop / laptop for file transfer, backup, or tinkering.


Here you can see the MMC slot in its position. It it mounted 'upside-down' ontop of the shield for the RF circuitry of the WiFi system.

Initially, folks might be surprised or hesitant to mount the MMC card here, or to do any work here. The key is, the RF circuitry is protected by the metal shield; that's what the shield is for. I was unable to solder directly to the RF shield, it might be made of steel or perhaps I just couldn't get it hot enough for the solder to stick. That's ok. Rather than risk damage by overheating, I instead used 24-hour epoxy (sparingly) to secure the MMC slot.

24-hour epoxy, after it has fully set up and cured, is incredibly strong and I am confident this mounting is mechanically very strong and durable.

ZipIt MMC physical location

MMC physical loccation alternate view

This is another angle view of the MMC slot's mounted location.


Here you can see the MMC slot (and the serial port) are both fully wired.

I have used #30 AWG enamelled / magnet wire. In addition, you can see I have repositioned the small speaker slightly. I really don't like things to be stuck to the case unless they are connected to the mobo with a plug. So I've stuck the speaker (with a dab of hot-melt glue) to the motherboard in an empty spot, and just used some wires to extend the length of the leads enough to fit. It doesn't really matter for me, as the speaker is never used / has never worked for me.

The hardest soldering was to the four resistors for the MMC signal lines. These surface mount resistors are about 1mm long and 0.3mm wide, and they're only about 1 or 2 mm apart from each other, making it a real test of hand-eye coordination.

MMC wiring

case modification

Here you can see the minor modifications I had to make to the battery compartment. As you can see, I have removed a small section from the battery compartment, in the 'upper right' area. This picture is from my third MMC-modified ZipIt. I realized that the battery spacer doesn't need to have the whole vertical side removed, just part of it. You can also see, before I replaced the ZipIt's bottom cover, I put some electrical tape over the MMC wiring to protect it a little.

The battery compartment cover still fits perfectly, so once the cover is on and closed, there is no trace of the modifications made in the compartment.


This is a close-up of the MMC slot, from the outside of the assembled ZipIt.

As you can see, the MMC card only protrudes enough so one can pull it free if needed. The card is otherwise deep enough into the ZipIt that it's not going to have a lot of stress on it in normal use or carrying.

External view of MMC slot

screen shot

This is a close-up screen shot from the ZipIt. Fresh after a reboot, logging in and issuing the "df" command.

As you can see, the MMC card is already mounted and ready to go.


My workbench with a couple ZipIts undergoing surgery.

I have to admit, at this point I don't want to work on another ZipIt any time soon.

The Red one is up and running and working great.

Zipits under the knife

Serial Port

This is a view of the serial port. It's a 6-pin female socket with 0.10" spacing. This is at CMOS signal levels, not RS-232 levels. The pinout, from left to right is:
RxD1  -  RxD2  -  TxD2  -  +3.3V  -  DBG  -  Gnd

I have built an external RS-232 level converter, following the directions on ZipitPet's site, which plugs into this port and provides connectivity to a normal 9-pin serial port.


This is my super-simple RS-232 Level Converter. On the left side is the 6-pin header that plugs into the side of the ZipIt. On the right-side is a 9-pin header that attaches to a cable I made up. Yeah, I only needed 3 pins (2, 3, and 5) but what the heck, I used a 9-pin header. In the middle is the MAX233 chip that handles the level conversion business.

The reason that I used a header on the right-hand side, instead of hardwiring a short serial cable, was so that I could use this level converter for other applications. For instance, I have an HP 200LX palmtop PDA and it has a serial port, but uses a non-standard connector. So I can make up another serial cable, to use the ZipIt with my 200LX.

Or, I can use this level converter for all sorts of other stuff. Might as well get the most for the few dollars I spent building it.

RS-232 level converter

Summary

The MMC card, mounted over the WiFi RF circuitry, works fine. It's a good position, it's solid and secure. Wiring and soldering is still somewhat tricky and trying. However, I am confident that this is the best place to put the MMC card, given the ZipIt's current motherboard layout.

I am also very happy with my revised ROM layout (available here). Without an MMC card, the ZipIt boots into Linux, has sshd, wavemon, ipdump2, and some other utilities, and is moderately useful. At the very least, one can ssh into it and work on it, or build their config file using what is available.

With the MMC card though, it really shines. The card offers great storage space, easy customization / configuration, and limits the number of times one has to reflash the internal ROM. (You can download a sample config directory here.)


Images and text copyright © 2006 Stephanie Maksylewich