Category: zipit


Usually when I modify something, I try not to ruin the aesthetics. It has to perform and look better(or the same) than before I start the project, otherwise I don’t want to do it. I think this mod has achieved that. With some help from a friend, I managed to design and build a surface mount serial level converter board that fits inside the Zipit Z2 behind the screen. It pops out of the Zipit in the form of a 3.5mm headphone jack that is stuffed up in one of the only spots it would possibly fit. From there, I built a short cable that turns the 3.5mm plug into a DB-9 for plugging into any standard serial hardware.

The mod is powered entirely from the Zipit it and will have an unnoticeable effect on battery life. The chip I used is the Maxim 3221 CAE 16 pin SOIC variant which also has some built in power saving functionality. This was the smallest chip that I could find that would do the job. The size of the capacitors on the board are not entirely critical but their function is. They help the IC boost the voltage up to the proper level for communicating with RS-232 devices. Without the caps, chances are that the converter will work for some devices and not for others because it will fail to fall within the RS-232 spec. I used .1uF surface mount caps in a 603 package. They are pretty tiny but certainly not unmanageable. There are plenty of tutorials out there on soldering surface mount components if you happen to be nervous about this.  Here is the schematic.

Before we can put the board in, we need to crack the case so I put together this Zipit disassembly guide.  After it was apart, I could see the space that I had behind the screen.  It’s a surprising amount really.  They could have made this thing a little thinner if they wanted to.

Here is a good view of the area behind the LCD

Test fitting the 3.5mm jack

As I was I saying, the 3.5mm jack is stuffed in the only spot I could find for it.  It’s where the LCD cable comes down from the upper half of the Zipit.  I happened to salvage this headphone jack from a Sansa Shaker which is a great MP3 player for a baby.  I had an extra one that was broken so I took the two headphone jacks out of it and gave one to my friend.  rkdavis found a 3.5mm jack on Digikey that looks pretty similar to what I used.  The space is very tight so the size of the jack is critical.

The wires routed and board mounted

As you can see, that board fits perfectly in that empty square.  I used a few dabs of hot glue to hold everything together and route the wires where I wanted them to go.  I took care to mark the wires with Sharpie pen notches so I knew which wire went where.  The wires I used are Kynar 30 AWG wire wrap wire.

Using helping hands to solder the 3.5mm jack

After the wires were all routed, I stuck the LCD housing back together.  I pulled all 7 wires through the same spot where the LCD wiring comes into the lower half of the unit.  I used some Helping Hands to hold the headphone jack and solder tiny wires to it.

3.5mm jack hot glued in place

I used copious amounts of hot glue to make sure that headphone jack didn’t move.  I also drilled the hole extra tight and crammed the jack into it so I don’t expect any movement at all.  After this step, the hard part is done and there are only 4 wires left to hassle with.

Mainboard locations for hooking up the serial converter

I stuck the keyboard back together and put the motherboard back into the zipit it.  Then it was fairly easy to solder the last four leads to these locations and put the bottom half of the case back together.  Now that it’s done, it’s time to plug it into a serial port.

The completed mod including the dongle

I’m using Hyper Terminal in Windows XP under VM Ware Fusion.  The port settings are 115,200, 8 bits, 1 stop bit, no parity and NO flow control(very important).  Here is what pops up when I first boot the Zipit.

This is what pops up when you first boot the Zipit

If anyone wants to replicate what I’ve done, here is the PCB layout for Kicad.  Feel free to comment if you need more assistance.

Now for that USB host mod

If you are interested in buying your own Zipit to hack and you like the information on my site, please buy your Zipit using this link and support my site. You won’t find them anywhere cheaper than that anyways.

Zipit Z2 disassembly guide

The Zipit Z2 is the perfect little hacking platform.  Searching around on the web, I couldn’t find a decent group of pictures showing how to disassemble the Zipit so I decided to post my own little guide.  Obviously use this guide at your own risk…

First we slide a plastic card to separate the dark gray plastic piece behind the screen from Zipit  Using a plastic card will avoid scratching the case.  In this case, I used a Borders key chain membership card I found on the sidewalk.  This will expose three screws behind the screen and the ribbon connector for the screen that I would suggest not messing with.  Remove those three screws.  The top two are slightly shorter than the bottom one.

Now you will need to use a slotted screwdriver to pop the plastic snap loose that is shown in the picture.  Don’t force it too hard but it IS fairly tight so you’ll have to use a bit more force than you’d normally expect.  Now that you have that nice gap, wedge your plastic card in place and slide it down the lcd housing.  There should be four plastic snaps that you will be able to work lose.  Notice the little magnet towards the top of the picture?  That’s what makes the Zipit stay closed nicely.

After I get this far with it, I like to flip it over and crack the bottom case.  The battery needs to come out if you haven’t already done so.  There are three screws under it.  Go ahead and pop those out.  After you’ve done that, it’s time to start prying with your plastic card.  I like to start at the back near the hinges since I seem to be able to wedge my card in there the best and get the case to flex the furthest.  I’ve tried it from the SD slot as well but it’s hard to get enough leverage that we since you don’t have the screen to hold onto from that side.  There are four of those snap tabs that are holding the bottom case together.

After you have the bottom separated, go back to the top.  There is a small piece of plastic that is in the hinge section.  You can now pop that off from underneath if you need to or whatever other angle.  After it’s off, you’ll need to pry upward as shown in the picture.  After it’s popped loose, you need to slide the whole back/upper half of the LCD housing towards the side you are prying from.  There is a small lip on the back half that is keeping it in place.  Similar to the lip near where the screwdriver is prying in the picture.  That’s it!  There is one extra piece that rkdavis insists is necessary but I’ve been using mine fine without it for a month now so you can make the final call.

Mozzwald graciously loaned me his picture of the mystery plastic piece installed in place:

If you are interested in buying your own Zipit to hack and you like the information on my site, please buy your Zipit using this link and support my site. You won’t find them anywhere cheaper than that anyways.

updated 3/24/2011

The Zipit Z2 is a great little hacking platform.  There are lots of people putting out their own distributions and directions for customizing this platform.  I’m going to attempt to make a list of all of the distributions and sources that I know of at the moment.  If anyone knows of any other distros out there for the Z2, please feel free to comment.  Here is the list in no particular order:

z2lite & z2sid – Wicknix was bored and put out z2lite.  For more power, try the Debian-based z2sid in both a command line only and X11 version.  These are the latest and greatest as of my most recent update.  They require uboot which is dead simple nowadays.  Mozzwald has links to the uboot version of z2sid on his site.

Wejp’s Z2 linux – Not sure I’m calling this by it’s proper name but this one is also one of the newer ones.  I haven’t tried it out myself but I know several folks have.  Click here to check out Wejp’s Linux.

UbuntuMozzwald has recently rolled out a version of Ubuntu for the Zipit Z2.  The most exciting featured of this distro for me is that it has gcc.  It’s the only Debian-based distro with gcc working properly at the moment.  Here is the link to Mozzwald’s Ubuntu distro.  I have also provided my own installation instructions.  I also started a Ubuntu for Z2 RC1 torrent to take a bit of pressure of Mozzwald’s server.

Root Nexus – Optk1k2600 is running this one-man community project.  It is a very nice image that is a touch more polished than some of the others.  For instance, the battery meter is somewhat stable on Root Nexus vs Side-Track in my experience.  There is lots of customization that Optk1k2600 has done to tailor this distro nicely to the Zipit platform.  Follow this link for more information on Root Nexus.

Side-Track – This distro was rolled out by none other than the Iron Geek, Adrian Crenshaw.  This one is based on Root Nexus but is customized for pen-testing so it has a bunch of cool network analysis/cracking tools on it.  Not all of them are tested and functioning.  It’s not a perfect distro but it’s pretty good and probably my favorite at the moment.  Click here for more information on Side-Track for the Zipit.  Now if only we could get driftnet working…  update 3/24/2011 – Irongeek has moved on to other projects and has not been keeping this updated.  I have made side-track work with uboot though if anyone is interested in giving it a shot.

IZS2 – IZS2 is developed and maintained by Ray Dios Haque.  This distribution does not require reflashing the boot loader or any other modification to the Zipit Z2.  I have not tested this userland but it seems to be a very popular choice in the Zipit community.  Follow this link for the IZS2 homepage.

EZ2S(IZS2 enhanced) – Russell Davis has been hard at work improving his latest Z2 shell.  Russell’s distribution has the distinct advantage of not requiring the boot loader to be reflashed.  Reflashing the boot loader makes a lot of people nervous since it’s possible to brick your system.  Unfortunately, I have not had time to try EZ2S or IZS2 enhanced since I didn’t find out about them until after I had already reflashed my kernel.  I know I can always go back but I’ve been too busy with Side-Track and Ubuntu to mess with it.  IZS2e/EZ2S is a fork of IZS2 which was developed by Ray Dios Haque.  You can read more about EZ2S on Russell Davis’ blog Executing Gummiworms.  Russell also has developed some cool scripts and binaries that have improved things for Zipit Debian users.

Aliosa27 – Hunter Davis made a video showing the entire process of installing the Aliosa27 image onto your Zipit.  I have not tried this one since it seems to be one of the older distros available.  Installing the Aliosa27 image involves reflashing the bootloader so that step is similar to any of the other Debian-based userlands out there.  Here is the link to Hunter’s videoQuantumLime also has a very nice and detailed page that features installation instructions for Aliosa27’s image.

OpenembeddedOpenembedded(for the Zipit at least) appears to me to be dead. Looking at Zipit Openembedded information page it sounds like the Zipit patches are out of sync with the mainline Openembedded code and probably mostly useless now. I’m including it here for historical purposes only. I have finally figured out how to build an Openembedded image for the Zipit.  Openembedded is really powerful and allows you to pretty much roll your own distribution with whatever features you would like.  Check out my guide Building Openembedded for the Zipit Z2 for more information.  Please comment below if my assumption is inaccurate and I will update this post.

Emdebian Grip – This distribution is another “roll your own” variety like Openembedded.  Douglas Henke has some excellent, detailed instructions on his blog about how to roll your own Emdebian Grip distro. As good as the instructions are, I haven’t tried it out yet myself so I can’t comment on how good or bad it is.  Here is the main Emdebian Grip homepage.

Buildroot – Yet another roll your own root fs for the Z2.  Buildroot is another alternative to Emdebian and Openembedded.

Mozzwald ran out of bandwidth for a bit so I’m starting this torrent anyone who would like to can grab his RC1 Ubuntu Distro for the Zipit.  See my installation instructions here.

I’m taking my first stab at creating a torrent here.  Hopefully it works.  Please seed it yourself if you like it:

Ubuntu for Zipit RC1 torrent

I took a closer look at the Easy Wifi Configurator script implemented on Mozzwald’s Ubuntu for the Zipit.  There are a couple trivial differences between Debian, Iz2s and Ubuntu for the Zipit and the setup-wifi.sh script tries to account for them all.  The long and short of it for now is that you need to change the line with the gawk statement to use awk instead.  That worked for me at least for the short term. There is also a broken sed statement which needs some attention but that will get worked out later I’m sure.

Second day with Ubuntu on the Zipit Z2

I decided to pick up my Zipit and try out Mozzwald’s Ubuntu distribution again.  I ended up manually starting up the wifi for now since rkdavis’ script isn’t working for me at the moment.  The following commands did it for me:

  • iwconfig eth0 essid your_id_here
  • iwconfig eth0 key your_hex_key_here
  • ifconfig eth0 down
  • ifconfig eth0 up
  • dhclient eth0

We’ll work on that EWoC script later…  Digging deeper into this distro, there is no GUI implemented yet.  First, let’s get a proper web browser on here:

apt-get install lynx

Now let’s grab the tweaked version of dosbox off Hunter Davis’ blog and try to compile it…

Five hours later I’m signing off here.  I’ll let you know next week when it finishes if it actually works.

I just came across a very exciting blog post on Mozzwald:

Ubuntu on the Zipit Z2

In all honesty, I don’t care much about Ubuntu.  It seems alright but I actually prefer Debian just slightly.  The really exciting part however is that mozzwald got gcc working!  Halle-freakin-lujah I’m glad someone finally tackled this problem.  There are a lot of things I like about Side-Track but there are also some broken things that were carried over from Rootnexus which I could do without.  Let’s dig in.

  1. firing up the Ubuntu VM on MacBook Pro
  2. download Mozzwald’s rootfs from right here http://www.mozzwald.com/zipit/zipit-ubuntu-rc1.tgz
  3. untar the image file into the home directory
  4. su to root.  Check this link to learn how to enable a root shell in Ubuntu
  5. dd if=zubuntu-jaunty-basic-rc1_05172010.img of=/dev/sdb (/dev/sdb on my system)
  6. with the flash card unmounted run gparted and expanded the partition on the flash card to the full capacity of the card
  7. download the Cozybit drivers from http://cozybit.com/projects/gspi8686/
  8. untar and rename the files to gspi8686.bin and gspi8686_hlp.bin, mount the flash card and copy them to /lib/firmware/libertas on the flash card
  9. unmount/eject the flash card and pop it in the Zipit Z2 (cross fingers)

Success!  It seemed to boot up nice and quick since it doesn’t boot into a window manager.  The l/p is user/ubuntu.  Right away I had to pull the Ubuntu root shell trick.

I’ve run into a small snag with the setup-wifi.sh not working properly but I think that will be sorted out soon enough.  I’ll report back after I’ve played with this distro a bit more.

Keep in mind that for this distro to work on your zipit, you’ll need to install the openzipit bootloader onto your device.  Instructions can be found here on Irongeek’s site.

Zipit serial board PCB picture

I had James etch the PCB for me since he’s set up a bit better for it thanks to a previously broken laminator I found somewhere.  To produce the board he used a laser printer to print on magazine paper, then he puts the printed surface facing a clean PCB and runs it back and forth through the laminator a couple of times.  Then he etches it.  He has a custom acrylic tank he made that has a fish tank bubbler and heater in it.  As you can see, the result is outstanding!  I’m waiting for my new Hakko 936 before I attempt to solder it up however.

I’ve been fighting with Kicad to design a tiny little serial converter for my Zipit.  The Zipit needs a serial converter because the outputs inside the Zipit don’t conform to the RS-232 voltage standards and they are unbuffered.  In other words, most RS-232 devices probably wouldn’t recognize them as they sit AND you could inject a voltage spike directly into the CPU if you decided to hot plug a device.  These serial transceivers have some level of resilience built into them that will protect against such spikes.  Some of the information I’m using in this project is coming from this page:

http://zipit2system.sourceforge.net/?page_id=82

I’m going to use a different chip than he does however.  I priced out the chip he spec’d and it was around $8.  Not sure why, there is nothing particularly special about it.  I chose a different chip for my project though.  I’m going with the Maxim MAX3221CAE in a ssop16 package which is ridiculously small and costs less than $2.  There are sixteen pins on the chip and it is roughly 6.3mm long.  This will be perfect because I am going to install my serial board inside the Zipit entirely.  Then I will use a 2.5mm jack to a DB9 cable or something similar to actually hook up to other devices.  The board I’m making will mount inside the lid behind the LCD screen.  Believe it or not, there is plenty of room back there.  My goal will be to make it so that no grinding or cutting is necessary but somewhere along the way I’ll need to drill a hole for the actual port anyways so no big deal either way.  I’d like to keep it looking as stock as possible.

Here is the schematic I designed(with help from James):

A flaw James pointed out with the other serial design is that the charge-pump capacitors were omitted.  This means that the output still may not have properly complied with the RS-232 spec with regard to voltage levels since those are part of the circuit that builds up the voltage.  I’m sure the other design works in most cases but it’s possible there are stubborn, older devices that could choke on it a bit.

Correction 6/25/2010: After looking at the datasheet for the Maxim 3223e, it appears to have internal charge-pump caps.  The chip is still much too large for my purposes but slightly easier to implement because it has fewer external components.

Anyhow, time to etch a board and see if it works.  Wish me luck.

Yesterday I started another little project.  I’m going to add a serial port to my Zipit Z2.  There are lots of good reasons to do this which I will further detail in another blog.  The Zipit Z2 technically has a serial port already on the motherboard but the outputs are not at levels that conform to RS232 standards so I need to add an RS232 transceiver to convert the levels properly.  The chip I’ve chosen is the Maxim MAX3221CAE.  This isn’t a standard dip that I could just throw on a piece of perf board and call it a day.  See, unlike other Zipits I’ve seen serial-modded, I want to fit the whole mod inside of the Zipit.  There just isn’t enough space for a big old dip anywhere in the unit.  My is to use a tiny surface mount 16-pin SSOP on a custom made paper-thin PCB.  Of course this leaves me with needing to design the board.  I’ve hand drawn boards before that use SMT’s but this one is just too tiny to be accurate.

A hand drawn PCB I made a few years back.

For this project, I need to be much more accurate and make a much smaller board to fit the limited space I will have.  This is where I need a software package like Kicad.  Kicad has many different libraries of existing components built into it already and 1000’s more available via packages on the net.  Kicad is NOT straight forward though.  Even if you’ve used something like Autocad or Mastercam in the past, this program has it’s own set of funny conventions that make little sense.  I’m going to give you a short rundown here of the steps I’m using to make my board.  My list will be incomplete and may not work for you but it’s meant to just be a general outline of the steps you need to go through to get a board made.  My friend James was kind enough to sit down with me for a couple hours and walk me through this program so my list here is made from memory and from notes I made during that short training from him.

  1. Open up Kicad and create a new project.  Give it a name and ignore the warnings.
  2. Now that you have the main window open, add your devices to the board.  The device tool near the top of the right-hand toolbar.  After you’ve selected the device tool, click somewhere with the cross-cursor.  Chose “by lib browser”, find your component and then hit the “x” to close that dialog.  The cursor turns into the component.  Now click somewhere to place it.
  3. After you’ve placed it, you can change the placement and orientation by putting your mouse over it and pushing “r” to rotate or “m” to move it.
  4. After you’ve placed your components, push the “add wire” button below the device button.  Draw in all your wires and make sure you don’t have any goofy junctions.  Save your drawing!
  5. Now hit “Netlist generation”.  It’s in the top menu near the right-hand side.  Hit netlist, generate it and save it.
  6. Right click on every component you placed and annotate it.  Stuff like IC1, IC2, C1-C10, R1, etc.  Giving the parts values is not a bad idea either.  It may help later or if someone else needs to modify or view your drawing.  There is an auto-annotate function but it’s not my preference.  Save again.
  7. In the top menu, push the “Run CVpcb” button.  It’s orange and near the middle.  In this dialog, you need to associate every component with a package type.  This can be challenging if the type of package you need doesn’t exist as a default.  Save that before exiting.
  8. Run PCBnew, ignore the warning.  Check the measurement units on the left side.  Pick inches or mm.  Turn on the rat’s nest below the measurement tool if it isn’t on already.  Click “read netlist” on the top of the screen near the middle.  Click “read current”.  Now your parts are stacked in a blob in the corner.  Draw a box around them with the pointer and move them towards the middle of the sheet.  Click “ok” on the dialog.
  9. Zoom in and mouse over the blob of components.  Hit “m” and move components off the stack one by one.  As you move them, hit the “r” button to rotate them into place.
  10. Route your tracks.  Right click to end.
  11. Select the PCB edges layer and draw your PCB.  This can also be the first thing you do.
  12. You should now have a printable board.  I’ll report back when I do but it could be a while.

I realize this list may have small discrepancies or may be flat out wrong.  There are several tutorials online that explain it better than I do but mine is just to give you a really quick overview of what it will take to actually draw a board with this tool.  Please email me or comment if you see any glaring errors.  I will be on my way now to rip my hair out after using this incredibly complex and confusing piece of software.

Powered by WordPress. Theme: Motion by 85ideas.