I recently got a batch of Zipit Z2 devices (to add to my small collection of small devices like my Zaurus SL-C860 and OpenPandora). Like the other devices, they all run Linux and can have custom versions of Linux.

I did a lot of research upfront on the web and got a stack of Mini->Micro SD adapter (contrary to some websites and Youtube videos which say the Zipit has a micro SD card; it doesn’t ; it has a mini. These are very rare and I only found them in China…) and downloaded Ubuntu for Zipit Z2, Debian SidX, Debian, U-boot and some other stuff you need.

I ruled out errors on the card itself by checking it my Linux machines and I tried different cards and different adapters all had the same issue. On #zipit IRC I found out this is a known issue and most adapter cards have this issue. It is ONLY on write though, not read.

Also it appears than when using kernel 2.6.29 the issue was not there yet; it came after that. Searching the web shows that the issue seems to have been introduced within a kernel around 2.6.31. One of my two goals for this summer is to figure out why and ‘fix it’. There are patches on the internet from that time which fix it for some card readers, making it easier to tackle the issue. But more on that later.

The problem I had now was that I had 10 U-boot flashed Zipits but no OS I could boot from it except the one which is built into the Flashstock which is OpenWRT. So how to make that version usable without reflashing? Note; If you didn’t flash your Zipit yet, note that there is a very good alternative here (iz2jffs) which is still being developed. It allows you to use the stock SD card driver (which does work as it’s an old kernel) to read/write to the SD without the above issue.

Because reading is fine but writing is not, why not store everything on the SD (OS, music, movies, games) and only write small files (game save data, source code etc) to the internal flash and tmp data to, well, /tmp?

That would make a usable device, with a few meg storage space. The way to do it is simple:

Create a file /etc/profile.d/zipit-mmc.sh on your Zipit with this contents

Insert the card into your Zipit and open a new terminal

You now can do things like;

cd /mnt/mmcblk0p1/usr/games/sdlquake; sdlquake

and Quake should run fine!

You can remove stuff from the internal flash now.

Note: there is an ‘overlay’ package which is used to do this normally, however I couldn’t get that to work without being able to write to the SD card while mounted in the Zipit. This seems to work like a charm anyway.