Wednesday, December 16, 2009

Restoring your Zipit Z2 to Defaults

A while back I bought my daughter a Z2 for Christmas. We got it off of eBay and my wife asked that I test it to make sure it works. About ten minutes later I realized that I had registered the device with Zipit Wireless using a nickname of my choosing. In effect, I just made this Zipit my own. But what if I wanted to "gift" this Zipit or sell it?

Quite simply, all you need to do to make a Zipit Z2 new again is to remove a few configuration files. You can do this using either my IZ2S, or even the vanilla Z2 Shell.

Boot up with your shell, and then do a "cd /mnt/ffs" and an "ls" to list the files there. You will see something like this ...

-rwxr-xr-x 1 root root 657 Dec 16 01:58 411.xml
-rwxr-xr-x 1 root root 112342 Dec 16 01:58 NeonGlow.jpg
-rwxr-xr-x 1 root root 1519952 Dec 16 01:58 Resources.arl
-rwxr-xr-x 1 root root 3578680 Dec 16 01:58 Zipit2
-rwxr-xr-x 1 root root 1921 Dec 16 01:58 properties.txt
-rwxr-xr-x 1 root root 4644 Dec 16 01:58 serversettings.xml
-rwxr-xr-x 1 root root 4644 Dec 16 01:58 serverstationz.xml
-rwxr-xr-x 1 root root 510 Dec 16 01:58 start.sh
drwxr-xr-x 2 root root 4096 Dec 16 01:58 wpa_supplicant


Only a few of these files are really required, and the rest are files that get downloaded from Zipit Wireless when your Z2 connects up to their servers through the wireless network.

You can safely remove these files:
NeonGlow.jpg - This is my chosen background wallpaper. Whatever you picked will have a .jpg extension. You can delete any .jpg file here.
properties.txt - This file contains your device ID (serial number), your username, and some other important settings. Deleting this file removes your Zipit Wireless account association.
serversettings.xml - This file contains a record of your messaging limit(s), your chosen wallpaper, and some radio station data.
serverstationz.xml - This file seems to contain the same data as "serversettings.xml". Both files can be deleted and would be recreated when you connect with your Zipit Wireless account.

DO NOT REMOVE (or alter) THESE FILES!
Resources.arl - This is some sort of archive which likely contains data for your theme. Although it's compressed, and I don't know how. Leave it alone.
Zipit2 - This is the core application for the Z2. Do not alter this file, or your Z2 will no longer be any fun.
start.sh - This short and simple script is what allows for you to run a shell, as it looks for an OS on your SD card at boot time. It also runs the Zipit2 application. Leave this alone!
wpa_supplicant - This directory contains an executable of the same name. This is what connects the Z2 to your wireless network. Leave this alone too!

Just to recap ...
If you want to make your Zipit "new again", you should delete your settings files so that your /mnt/ffs directory looks something like this ...

-rwxr-xr-x 1 root root 1519952 Jan 1 1970 Resources.arl
-rwxr-xr-x 1 root root 3578680 Jan 1 1970 Zipit2
-rwxr-xr-x 1 root root 510 Sep 17 2007 start.sh
drwxrwxr-x 2 root root 0 Sep 17 2007 wpa_supplicant


The next time you boot your Z2 (without the SD card inserted) you will get the "first time wizard". By the way, in case you forgot - one of your options in this wizard is to enter the credentials for your existing account.

Tuesday, December 15, 2009

Links2 (Graphical Web Browser) for the Zipit Z2

This is links2 compiled along with directfb to provide a graphical web browser to the Zipit Z2 Shell.

You can download it here: http://oddree.com/zipit/links2-zipitz2.zip

Note that if you get the latest IZ2S image from this site - you will not need this program because it is all ready included by default. This is just provided for folks who want to experiment with the Z2 Shell in it's unadulterated, and naked form.


Here is the included README ...
** Links2 built with graphical directfb support **
** for the Zipit Z2 Wireless device **
** by Ray Dios Haque **

ABOUT
This is links2 built with graphical support for
all of the popular image types (png, jpeg, gif).
It utilizes directfb as a graphical driver, and so
there is no need for X11! This tooks weeks to get
running correctly. So I hope you enjoy it. :-)

Remember - this is a very basic web browser. While
you can do fun things like read blogs and check your
email, watching videos and running Flash is just out
of the question!

INSTALL
Copy everything in the bin folder, to the bin folder
on your SD card. That's it. Keep in mind that this
package is now part of the "Improved Z2 Shell" which
is available from www.oddree.com.

USING LINKS2
To start links2 in graphical mode, just run 'links2'
inside of terminal. This will actually run a script
which launches links2 along with some special and
required parameters (such as the screen rotator).

To visit a web page, press the letter "g" and then
enter a URL. To move around on the page, you can
hold down ALT and SHIFT (white up arrow next to ALT)
and then use your arrow/navigational keys to move
around the page. When running links, you are using
a special keymap that aliosa27 created. When you
exit links, your original keymap is reloaded.

NOTE: You can still run links in text mode, simply
by running 'links' (without the 2).

ALSA driver and utilities for the Zipit Z2

A little more than a year ago, our friend GPSFan was able to get ALSA sound and it's utilities running on the Zipit Z2. This was quite an accomplishment, as it meant that you could now use all sorts of other programs that rely on ALSA sound. However, the tools could not run on the stock Z2 Shell because they were not built "statically". And so - I made it my personal mission to rebuild these tools in a static form and give the Z2 Shell the sound it deserved.

It took many late nights (and some serious help from GPSFan) but I was eventually able to recreate the environment that GPSFan used to create his modules, and then change it slightly to get things compiled in a static form. Then it was just a matter of getting the tools to cooperate with the Z2. There are quite a few tricks involved in loading things properly, and so I wrote an included script which does everything.

You can download it here: http://www.oddree.com/zipit/alsa-zipitz2.zip

Note that if you get the latest IZ2S image from this site - you will not need these drivers because they are all ready included and loaded by default. This is just provided for folks who want to experiment with the Z2 Shell in it's unadulterated, and naked form.

Here is the included README notes:
ABOUT
alsa-lib/utils-20091113 (snapshot) built for the
Zipit Z2 Shell by Ray Dios Haque on 11/24/2009.

These tools should allow you to use GPSFan's
Z2_Rec modules (playback/recording) on the Z2
Shell, or Rays's Improved Z2 Shell (IZ2S).

More information available on: oddree.com.

For information on how the modules were built,
please see ./orig-notes/readme.

INSTALL
There is a lot going on with this script, and I
wanted to keep it really simple for the purpose
of testing or simply screwing around with your
Zipit. Note that if you are running this every
time you boot your zipit, this is probably a
pretty bad practice and you should consider
giving all of these items a permanent home on
your Z2. Or - just get the latest version of
Ray's Improved Z2 Shell from oddree.com which
will include all of this stuff.

That said, simply run ./loadsound.sh from this
directory to install and activate sound.

The script will remove the native sound driver,
create a few new directories for configuration
files, copy over the needed configuration files,
insert modules into your running system, and
finally will run a command to load up the sound
state from a successful instance of ALSA.

You will need to copy everything in the bin
directory to the bin folder on your SD card.

Now you can play your MP3's. In fact, I have
included a build of mpg123 in the bin directory.

Adjust volume and other things with alsamixer.

THANKS
Many, many, thanks to my friends GPSFan and
rkdavis from #zipit on irc.freenode.net. We put
in a few late nights to get this going.

Saturday, December 05, 2009

Version 2.03 IZ2S Release - SOUND and SHARED LIBRARIES!

I am probably more excited about this release than any other, because it has opened up the possibilities for some things that just weren't possible before. We now have the ability to run applications using shared libraries. And the first application I decided to port over was "cmus". Cmus is a "small and fast text mode music player" which runs in a console. It's been built to support wav's, mp3's, and even vorbis ogg files. And best of all, it can play streams (that means streaming radio!).

This represents a lot of work on the part of myself, and my friends from #zipit on irc.freenode.net. GPSFan was nice enough to share some of his dark secrets with me pertaining to buildroot and ALSA. From there I was able to get the ALSA-utils built, and then rebuilt statically.

You can download version v2.03 here: http://www.oddree.com/zipit/Z2S-v203.zip

Here is a quick video demonstration of the new feature(s):


As always - here is the README file which is also included in the Zip file.

IZS - The "Improved Z2 Shell" (aka Shell with Benefits) v2.03

ABOUT
This collection was built by Ray Dios Haque out of sheer necessity. I wanted something that I could play with that would not effect the stock software that comes on the Z2. The easiest way to do that was to take the Z2 Shell that was built by rossimo from Zipit Wireless and expand upon it. I take no credit for the work of the Zipit community. If I don't claim to have built it - it's because I didn't. Thanks to all of you for your contributions over the years. I hope you enjoy my additions!

INSTALL (borrowed from the original README)
Format your SD card as a FAT or a FAT16 file system. Copy everything from this zip file onto the root of the card (preserving all paths/directories). Insert your SD card into the Zipit and boot it up. Note that you can only boot this image if you are running the Stock OS that came with your Zipit. If you have installed OpenEmbedded or Debian, then you have probably replaced the stock operating system which included a routine to look for the z2script.sh script. For legal purposes, I cannot provide you this stock operating system. Some of the smarter people in the Zipit community might be able to help you restore this OS (see CHAT below).

CHAT
Come chat with us! There is a thriving (?) community of the worlds best Zipit hackers who hang out in #zipit on irc.freenode.net. You can fire up 'irc' from this very image and come hang out.

CHANGES/ADDITIONS
RELEASE 2.03 (ALL NEW!) - December 2009
We have sound!! Thanks GPSFan! (alsaconf, alsamixer, alsactl, amidi, aplay, gawk, getopt, iecset), SHARED Library support (ldd, ldconfig, readelf), cmus (a wicked MP3 Player), matrix (ncmatrix), mpg123, mplayer-10rc2, ntpdate, gzip (gzip, gunzip, gzexe, zcat, zcmp, zdiff, zegrep, zforce, zless, zmore, znew), zz (script to run after ssh'ing in - use . zz (dot space zz))

RELEASE 2.02 - November 2009
cls (clear screen), centerim (ncurses instant messenger with AIM, Yahoo, ICQ support), irssi (ncurses irc client), links (ncurses), links2 (graphical browser!), sed (for scripting), tar, bzip2 (bzip2, bz2recover), coreutils (10MB's of binaries)

RELEASE 2.01 - Initial Release
wget, ircii-20090520 (irc), wireless-tools (ifrename, iwconfig, iwevent, iwgetid, iwlist, iwpriv, iwspy), ftp (ftp, /etc/services), unzip (unzipsfx, unzip, funzip), nmap (nmap, *new* ncat), wpa_passphrase, less (lessecho, lesskey), grep

LIBS CHANGES
Removed the worthless ncurses static libs to make way for all of the *shared* libs. Not listing all of them here. Just look for yourself.

STARTUP SCRIPT MODIFICATION(S)
REV 2.03
- Stopped audio_pxa from loading, and then run /mnt/sd0/modules/alsa/loadsound.sh for ALSA sound modules.
- Added ntp protocol to /etc/services file.
- Added a line which will fix the time and date if there is a network connection available, and then display that time/date to you.
- From here on out, all libs will go into /mnt/sd0/lib which will be linked to both /lib and /usr/lib/.
- Hid all the gory details of wpa_supplicant, while adding some other stuff for verbosity.
REV 2.02
- Modified the PATH statement so that coreutils and /mnt/sd0/bin binaries will override the busybox stuff.
- Created a home directory for the root user which exists on the SD card. It holds your stuff.
- Added a routine that change your MAC address to something random the first time you boot up. This should prevent duplicate MAC problems if you own multiple Z2 devices.
- Added a /var directory that exists on your SD card. Some things (like dropbear) expect to find it. Had to fix a script error in the BETA (thanks rkdavis).
- Added an /etc/issue file which is displayed at logon time and to ssh connections.
REV 2.01
- Added a routine asking if you would like to configure your wireless card. This was not possible before as there was no scanning routine and the image lacked the wpa_passphrase utility. You can now scan for and configure your wireless settings entirely from the zipit (wording updated in 2.02).
- Added "cp /mnt/sd0/etc/services /etc/services" which gives the ftp command the port numbers it needs to function.
- Added "cp -R /mnt/sd0/etc/terminfo /etc", "export TERM=vt102", "export TERMINFO=/etc/terminfo" to help irc understand the screen layout.
- Added "ln -s /mnt/sd0/lib/* /lib" to make ncurses libraries usable, and any future libraries that you or I might add.
- Added "ln -s /mnt/sd0/share /share" for nmap and anything else that might require a "share" directory to be present to function.

OTHER MODIFICATION(S)
- Replaced the stock keyboard driver in /modules with one that was created by GPSFan (Ken) from the Zipit Yahoo Group. This removed all of the problems with keys not working, or repeating while typing. The original drivers remain, but have been renamed to *.orig.

COMING SOON?
- A better mp3player or a front-end for mpg123.
- A script to download and install "packages" (zip files) using wget, unzip, and a "binary repository" on www.oddree.com. A similar system could provide updates when I provide them.
- I still want to get an image viewer working. DFBSee 'almost' works.

IFAQ (InFrequently Asked Questions)
Q. Why are you wasting your time on this? The Z2 Shell is dead!
A. It may be 10x more work to get simple things built for it - the Z2 is very lean, and still very useful.

Q. Why does nmap (or some other binary) run so slow?
A. Because everything has to be built "static" to run on the Z2. That means that where you might normally have hundreds of shared libraries on a linux machine, the Z2 Shell must embed the libraries into each running binary. It makes for some bloated inefficient stuff. But, it works. If you want a better system - start writing it! Otherwise, try to limit the actions of what you are doing. For instance, use an address range or port range with nmap. Don't start long running scans on entire networks. This is a Z2 we're talking about. The resources are pretty lean.

Q. How can I add my own binary/package?
A. There are several ways to go about this. The method I have used to compile everything is "scratchbox". Scratchbox is a program which let's you cross-compile applications. That means that you can build stuff for an ARM platform, even though you have a regular x86 machine. It can be tricky and complicated. Try reading up on what I have posted at http://www.oddree.com.

Q. Why did you *insert snarky comment here*?
A. If you find that I did something stupid and inefficient, do let me know. I don't claim to have any expertise in the area of building software. If you have some suggestions on how to improve things or would like to help with the next release of this improved Z2 Shell, email me at ray@oddree.com. I would love to collaborate with some folks who might be more talented than myself.

Q. Will you build *insert package name here* for me?
A. Probably. Unless you are asking me to build something that has an endless list of dependencies. In which case I will probably tell you to install OpenEmbedded or full fledged Debian. They all ready have all of these packages. I am only expanding upon the old Z2 Shell because I find it lean and useful.


Happy hacking! Next release ... keyboard backlight support? It's hard to chat in the dark. :-( I am seeking help from the Z2-Zen master, aliosa27 for that project.

About The "Improved Z2 Shell?" (IZ2S)

QUICK ABOUT
The Improved Z2 Shell (IZ2S) is an expansion upon the Z2 Shell that Zipit Wireless released for general experimentation.

WHY USE IZ2S?
I built IZ2S out of necessity because the hardware was perfect for what I needed, and the stock OS had some limitations. I started by building add-ons, but some of them were a bit complicated and so it turned into full standing releases. There are lots of reasons to use the IZ2S, but here are a few highlights ...

  • IZ2S loads from an SD card just by having it inserted, as this is how the folks at Zipit Wireless intended you to use their shell. You do *NOT* need to flash anything, hook up and special hardware, or perform any activities that might otherwise :brick: your Z2. You can return to the stock OS at any time simply by ejecting the SD card and rebooting.
  • IZ2S contains most of the features that you find in the stock OS, but improves upon them (such as a much better keyboard driver and the ability to pick your own radio stations).
  • IZ2S is very lean. It boots in 4 seconds and running multiple applications at once is perfectly fine. You can effectively chat on IRC in one window, instant message your buddies in another, and be listening to your favorite streaming radio station in a third window (thanks to the magic of 'screen').
  • IZ2S offers applications that are not available for the stock OS, such as a graphical web browser (links2).
  • Ray is building and releasing new applications all the time, and installing them can be done on the device itself - or by copying files onto your SD card from within MS Windows.


LIMITATIONS
  • IZ2S is "text based" meaning that everything happens from a terminal console. If that is not your cup of tea, you might consider installing Debian or OpenEmbedded. Keep in mind though - that those installations have their own kernels which will require that you remove the stock OS.
  • IZ2S has an instant messenger, but it will not offer you cellular texting. For that, you need to return to the stock OS so that you can be connected to your paid Zipit Wireless account.
  • IZ2S does not yet have any controls over the display brightness/contrast, or the keyboard lights. We are hoping to have these features included soon thanks to the work of the Z2 community.
  • IZ2S has an "idle screen sleeper" that looks like a bricked device. This seems to be the result of the kernel trying to put a display to sleep, and the display driver doesn't respond correctly. It's a problem that we inherited from the Z2 Shell from Zipit Wireless, and we haven't been able to fix it yet.


WHERE CAN I GET IT?
You can download the Improved Z2 Shell by following links from this very site. This site is actually a great big Blog, and I always tag IZ2S releases with the tag "IZ2S". Therefore, you can always find the latest release with this link: http://rayhaque.blogspot.com/search/label/IZ2S. The newest/latest release should always be the first thing that shows up.

Friday, December 04, 2009

New IZ2S Shell - Coming Soon

I am probably days away from releasing another version of my Improved Z2 Shell. Since getting the ALSA sound package working, I have been working on getting a good MP3 player to use. I found that there are quite a few console (ncurses based) MP3 players to chose from - but they all shared a common problem ... *SHARED* libraries and plugins.

I have never really challenged the restriction that comes with the Z2 Shell which is "your binaries must be static". I assumed that this had something to do with the way that the kernel was built - and I was partially right. Since working with GPSFan on getting ALSA going, I have been getting familiar with "buildroot" which makes building the Z2 kernel really easy. Not that I am interested in replacing the kernel (because I don't want to harm my stock OS) but I *am interested* in re-creating the kernel. In that process that builds the kernel, you are given a chance to turn enable options, add modules, and then build software against the final product. I found that uClibc had some issues with "pre-loading shared libraries". This pre-loading process typically also contains a cache which is created at boot time, or on demand (such as after building and adding new libraries). So caching and pre-loading are broken. But ... the ldconfig, and ldd tool could still be built. That means that shared libraries can still be used provided that "ldconfig" has been run before the application that needs the libraries.

With that, I went to work on building cmus for the Z2. I had spent the previous couple of days trying to work the plugin files into "static binaries" which was quite a contradiction being that they were created in the form of .so files. Now, I could drop all that nonsense and build the application as the developers intended. With the binaries built, I began the process of getting libraries copied over and putting the shared libraries where they belonged. To my absolute delight - it worked!

And so, in the coming days I will be releasing the latest and greatest Z2 Shell which includes the highly anticipated ALSA sound modules, and a new line of applications that previously were not possible.

I am also trying to figure out how we can get the keyboard backlight working, but I will definitely need some help with that. Your friend and mine, aliosa27 has offered his assistance and so I am much more confident that we can come up with something now. You may have heard that sweetlilmre' has been successful in getting this working with the latest kernel source, but it will be tricky trying to apply his same tactics to an older kernel version. Additionally, we will have to do the whole process with modules and daemons (without touching the core kernel).

So check back soon folks. In the mean time, I will be BETA testing all this stuff I have thrown together latetly. If you aren't all ready doing so - get into #zipit on irc.freenode.net and join the discussion.

Monday, November 23, 2009

Version 2.02 IZ2S Release (aka Shell with benefits)

I am pleased to present you with my very latest Improved Z2 Shell version 2.02. This release is a grand improvement over the last, and provides you with a new *color* irc client (irssi), a multi-protocol instant messenger (center-im 4.22.8) and a graphical web browser (links2 with DirectFB). And thanks to the wonders of "screen" you can run all three of these new programs and more in the comforts of your Z2 Shell.

Here is the download link: http://www.oddree.com/zipit/Z2S-v202.zip

VIDEO
I have created a video to demonstrate some of these neat new tools and features.

Improved Zipit Z2 Shell v2.02 - Now with graphical web browser! from Ray Haque on Vimeo.



ABOUT
This release represents several weeks of maddening code hacking. After getting Center-IM working I went straight to my goal of creating a graphical web browser for the shell. Initially I went after trying to get something going with "MiniGui". This was used to create a graphical web browser for the original Zipit device. However, the folks in #zipit on irc.freenode.net turned my onto the DirectFB project. It took about two weeks of off and on hacking and poking, but I was eventually able to wrangle all of the dependencies into submission and slap all the parts together into a single static binary. The biggest challenge there was to make the screen display correctly. As you may know, the Z2 uses a screen size of 240x320, which is turned sideways. This meant that DirectFB had to be rotated. But when rotated, it no longer fit the screen! In the end, a kind fellow in the UK (from the DirectFB mailing list) suggested that I alter the application (in this case, links2). From there it wasn't that difficult to alter. I just had to tell links to ignore whatever size DirectFB reported to it, and set it to 320x240. Another challenge was to get the keyboard to be usable in links2. Links2 wants to use the ALT key to control menus. But on the Z2, the ALT key is used for every single non-alpha key! I was exploring some complicated solutions when rkdavis (from #zipit) found that simply using a different keymap, this whole problem was avoidable.

Here are the release notes:
IZS - The "Improved Z2 Shell" (aka Shell with Benefits) v2.02

ABOUT
This collection was built by Ray Dios Haque out of sheer necessity. I wanted something that I could play with that would not effect the stock software that comes on the Z2. The easiest way to do that was to take the Z2 Shell that was built by rossimo from Zipit Wireless and expand upon it. I take no credit for the work of the Zipit community. If I don't claim to have built it - it's because I didn't. Thanks to all of you for your contributions over the years. I hope you enjoy my additions!

INSTALL (borrowed from the original README)
Format your SD card as a FAT or a FAT16 file system. Copy everything from this zip file onto the root of the card (preserving all paths/directories). Insert your SD card into the Zipit and boot it up. Note that you can only boot this image if you are running the Stock OS that came with your Zipit. If you have installed OpenEmbedded or Debian, then you have probably replaced the stock operating system which included a routine to look for the z2script.sh script. For legal purposes, I cannot provide you this stock operating system. Some of the smarter people in the Zipit community might be able to help you restore this OS (see CHAT below).

CHAT
Come chat with us! There is a thriving (?) community of the worlds best Zipit hackers who hang out in #zipit on irc.freenode.net. You can fire up 'irc' from this very image and come hang out.

CHANGES/ADDITIONS
RELEASE 2.02 (ALL NEW!) - November 2009
cls (clear screen), centerim (ncurses instant messenger with AIM, Yahoo, ICQ support), irssi (ncurses irc client), links (ncurses), links2 (graphical browser!), sed (for scripting), tar, bzip2 (bzip2, bz2recover), coreutils (10MB's of binaries)

RELEASE 2.01 - Initial Release
wget, ircii-20090520 (irc), wireless-tools (ifrename, iwconfig, iwevent, iwgetid, iwlist, iwpriv, iwspy), ftp (ftp, /etc/services), unzip (unzipsfx, unzip, funzip), nmap (nmap, *new* ncat), wpa_passphrase, less (lessecho, lesskey), grep

NEW LIBS
ncurses (libform.a, libform_g.a, libmenu.a, libmenu_g.a, libncurses++.a, libncurses.a libncurses_g.a, libpanel.a, libpanel_g.a)

SCRIPT MODIFICATION(S)
REV 2.02
- Modified the PATH statement so that coreutils and /mnt/sd0/bin binaries will override the busybox stuff.
- Created a home directory for the root user which exists on the SD card. It holds your stuff.
- Added a routine that change your MAC address to something random the first time you boot up. This should prevent duplicate MAC problems if you own multiple Z2 devices.
- Added a /var directory that exists on your SD card. Some things (like dropbear) expect to find it. Had to fix a script error in the BETA (thanks rkdavis).
- Added an /etc/issue file which is displayed at logon time and to ssh connections.
REV 2.01
- Added a routine asking if you would like to configure your wireless card. This was not possible before as there was no scanning routine and the image lacked the wpa_passphrase utility. You can now scan for and configure your wireless settings entirely from the zipit (wording updated in 2.02).
- Added "cp /mnt/sd0/etc/services /etc/services" which gives the ftp command the port numbers it needs to function.
- Added "cp -R /mnt/sd0/etc/terminfo /etc", "export TERM=vt102", "export TERMINFO=/etc/terminfo" to help irc understand the screen layout.
- Added "ln -s /mnt/sd0/lib/* /lib" to make ncurses libraries usable, and any future libraries that you or I might add.
- Added "ln -s /mnt/sd0/share /share" for nmap and anything else that might require a "share" directory to be present to function.

OTHER MODIFICATION(S)
- Replaced the stock keyboard driver in /modules with one that was created by GPSFan (Ken) from the Zipit Yahoo Group. This removed all of the problems with keys not working, or repeating while typing. The original drivers remain, but have been renamed to *.orig.

*STILL* COMING SOON?
- A script to download and install "packages" (zip files) using wget, unzip, and a "binary repository" on www.oddree.com. A similar system could provide updates when I provide them.
- I have been working on getting GPSFan's sound modules working on the Z2 Shell. The modules load, but the alsa tools do not build properly with a static flag. I am hoping to get this resolved soon. GPSFan has been very helpful in troubleshooting this.
- I still want to get an image viewer working. DFBSee 'almost' works.

IFAQ (InFrequently Asked Questions)
Q. Why are you wasting your time on this? The Z2 Shell is dead!
A. It may be 10x more work to get simple things built for it - the Z2 is very lean, and still very useful.

Q. Why does nmap (or some other binary) run so slow?
A. Because everything has to be built "static" to run on the Z2. That means that where you might normally have hundreds of shared libraries on a linux machine, the Z2 Shell must embed the libraries into each running binary. It makes for some bloated inefficient stuff. But, it works. If you want a better system - start writing it! Otherwise, try to limit the actions of what you are doing. For instance, use an address range or port range with nmap. Don't start long running scans on entire networks. This is a Z2 we're talking about. The resources are pretty lean.

Q. How can I add my own binary/package?
A. There are several ways to go about this. The method I have used to compile everything is "scratchbox". Scratchbox is a program which let's you cross-compile applications. That means that you can build stuff for an ARM platform, even though you have a regular x86 machine. It can be tricky and complicated. Try reading up on what I have posted at http://www.oddree.com.

Q. Why did you *insert snarky comment here*?
A. If you find that I did something stupid and inefficient, do let me know. I don't claim to have any expertise in the area of building software. If you have some suggestions on how to improve things or would like to help with the next release of this improved Z2 Shell, email me at ray@oddree.com. I would love to collaborate with some folks who might be more talented than myself.

Q. Will you build *insert package name here* for me?
A. Probably. Unless you are asking me to build something that has an endless list of dependencies. In which case I will probably tell you to install OpenEmbedded or full fledged Debian. They all ready have all of these packages. I am only expanding upon the old Z2 Shell because I find it lean and useful.


WHAT'S NEXT?
Right now, I am focusing on getting the sound modules working correctly on the Z2 Shell. Long ago, GPSFan developed some kernel modules and utilities for the Z2. He did so for the replacement shell(s) which are able to load dynamic libraries. I have been working to get those same tools to load in a static environment but I have run into some obstacles. Thanks to GPSFan, we determined that the broken alsa-utils I kept creating were actually due to bugs with the alsa-libs and alsa-utils packages themselves. Meanwhile, I have been successful in compiling an older audio tools called "aumix". While it can recognize devices and change sound settings ... I still have no sound! It's a work in progress! If any of you talented Z2 developers are lingering and lurking out there - get your asses in to #zipit and help me. :-)

Wednesday, November 11, 2009

centerim for the Zipit Z2!

One of the first things I noticed about the Z2 was that the keyboard driver for the stock application was downright broken. On the top of my list of "things to compile for the shell" was a multi-protocol instant messenger. But that ended up being quite a task.

Most people probably would have given up and just installed a new kernel or a new OS to the device such as Debian or OpenEmbedded. But I actually like the stock operating system, and I don't want to break it (despite the lousy keyboard driver). And so ... I have been enslaved to Scratchbox for the past two weeks trying to build this application for the Z2 Shell. There were some pretty deep pitfalls. Namely that MSN and Jabber require a few encryption pieces which didn't like being built into a static binary. But before I get carried away with the details ...

Here is the binary if you would like to try it: http://oddree.com/zipit/centerim-zipitz2.zip

Here are the release notes:
** centerim-4.22.8 for the Zipit Z2 by Ray Dios Haque **
** http://www.oddree.com **

IM ME! AIM: rayhaque - Yahoo!: ray_haque - ICQ: 12003044

ABOUT
This is the centerim instant messenger from http://www.centerim.org
compiled for use on the Z2 Shell image for the Zipit Z2. It was a
nightmare to build this due to the long running list of dependency
libraries and applications. Note that the enourmous file size is
the result of building in all of these static libraries. This binary
was built with AIM, Yahoo, and ICQ protocols. I removed everything
else to keep the size low and my sanity in check. Also note that
MSN and Jabber were removed due to their dependency on GPGME which I
could not successfully build in a 'static' manner. If you want these
protocols added back in, please build it yourself and then tell me
how you pulled it off. :-)

INSTALL
Extract the contents of bin to the bin folder on your SD card. These
files will be located in /mnt/sd0/bin after you have booted. You will
not need a path to run them as your PATH variable should include this
directory. Just run "centerim" to get started (it takes a few seconds
to load up).

Extract .centerim to the root of your SD card. It will be mapped as
/mnt/sd0/.centerim. This folder will house all of your contacts,
logs, settings, and perhaps your account passwords if you elect to
save them (default).

USAGE (to get you started)
centerim - starts the messenger.
g - will bring up a menu which you can navigate with the circular
arrow keys on the zipit. You can set up your accounts here.
ESC (smiley key) twice - exits whatever menu you are in.
*Read the official documentation at http://www.centerim.org for more*

MODIFICATION
I noticed that the "servers" being used for the AOL and Yahoo plugins
were very old, and didn't answer requests any more. I have changed
them to reflect what is used when I run Pidgin. If you can't get AIM
or Yahoo to connect or log on, it could be that these servers have
been changed again. It could also be that the protocols have been
intentionally broken by the vendors to prevent people from running
applications like this one. Check www.centerim.org for details.

I also set the margins to what I think is an appropriate height and
width. If you don't like them, you can change them in the main menu
(accessed by pressing 'g'). Any changes you make will be saved to the
config file which resides in /mnt/sd0/.centerim.


Earlier in the week I wrote up a blog post about compiling gettext to give you all some indication of why I have pulled out all my hair. In that post, I pasted my "dependency tree" which I created so that I could keep track of where I was in trying to build a library - which needs a library - which needs ... you get the idea.

When I was done, this is what that dependency tree looked like, complete with notes. I am sharing this partly so that you can see what all was involved here - but also in case I am every crazy enough to try and build this again (which could happen if AOL or Yahoo! decide to re-write something with their protocols or logon processes).

I am pasting a picture, because the HTML here keeps slaughtering all of my tabs and white-space. If you actually want to get to the text - I have put it here.



So there you have it - an application that took two weeks of my life away and will probably only be used by me. This will also make it's way into my next "IZ2S" Shell image which should drop in a week or so depending on what else I might build in the near future.

HACK ON!

Magnify Your Zipit!

Mcavity from #zipit on irc.freenode.net has finally found the cure for strained eyes when you are running a terminal console on your Zipit. You just need to magnify it. After doing some shopping around, he found a site that sells a Gameboy screen magnifier for $0.69.



The magnifier is a flip up - flip down model that you can put up and out of the way when you are not using it. This morning he shared some pictures of the attachment in action.



And here it is in "flipped up mode".



Now, with magnified eyes!



Another before and after ...




Mcavity says that this works pretty well, especially for having spent less than a buck on the idea. I don't know that he was thinking large enough though. When he shared his ideas about getting one of these, I kind of had a scene from the movie Brazil in my head.

"Has anyone seen Sam Lowry?"

Monday, November 09, 2009

Fun with the Debian ARM collection + Building with Scratchbox Part I

There have been a few packages that I simply cannot configure for the ARM platform. These past few weeks I have attempted to build some rather hefty applications that have dozens of dependencies. The way things go, I usually get about three or four dependencies deep when I hit one that just won't 'make' without a pile of errors. Being the non-programmer that I am, I do what anyone else would do. And that is to run the error message through Google and then read through whatever mailing list or forum that I come across. At the end of the day, I usually end up with a pile of compiled and installed libraries - which don't do me any good.

That is, until I found the Debian ARM ports collection. This collection of software includes packages, source code, and patches. Naturally, just taking a compiled binary and dropping it onto the Z2 is not going to work. It's not that easy! And I don't mind building things from source code ... when the source code builds correctly. That's were the source code and patches come into play.

Take for example: gettext. This old GNU utility builds pretty easily on most platforms. But the ARM branch of Debian (and the Zipit Z2 Shell) were built with ulibc. ulibc is a work-alike clone to GNU libc (aka glibc). But there are those little nuances that get under your skin. I found myself beating my head against the wall Saturday afternoon because ulibc doesn't support some sort of program error checking routine. The result is that you cannot build gettext without modifying some code which is well beyond my capabilities. The ulibc folks could probably fix this. But they throw the blame at the glibc folks for supporting a routine which really serves no purpose. While they are busy fighting like a bunch of children (this argument is a couple years old) I still don't have a working gettext!! Surely there are people out there who are smarter than me and who can fix this broken code. There are. And *maybe* they have fixed it. Here is where I go next ...

First, I browsed out to Debians Etch package page for the ARM platform. You can find it here: http://packages.debian.org/etch/arm/.

After some browsing around (DANGER: the search at the top of the page leads you away from the ARM platform stuff!!) you might find that gettext is available from the "Development" category. Here is the page where the source code was located: http://packages.debian.org/etch/arm/devel/gettext. Take a look at it now. On this page I can see that gettext has some dependencies which are displayed with a red bullet. While it may be lousy that I have another couple dependencies to install - at least I know I can build them without errors! Time, I have. Development skill - not so much. Assume that we have satisfied all of it's needs (ignoring the libc needs, since Scratchbox provides ulibc for us).

On the right side of the page there are several links for downloading the chunks of code. There is the package itself (some pre-compiled binaries that "might" work, but probably won't). There is the original source code (the tar-ball has the word "orig" in it's title). Most importantly, there is the "patch file" which will always end with "diff.gz". The patch file is what will correct the source code for us so that we can build it properly for our Z2 ARM platform.

If you haven't figured this out yet - it helps to be connected to your Scratchbox development PC in a terminal window, with a browser opened on your regular PC. Then you can copy and paste links directly into scratchbox without weighing it down with whatever else you are running (like the web browser).

So, we would start up Scratchbox and fetch the files we need:

wget http://ftp.de.debian.org/debian/pool/main/g/gettext/gettext_0.16.1.orig.tar.gz
tar -xzf gettext_0.16.1.orig.tar.gz
cd gettext-0.16.1

Now before we start building anything, we need to patch the source code for the Debian ARM platform:

wget http://ftp.de.debian.org/debian/pool/main/g/gettext/gettext_0.16.1-1.diff.gz
gzip -d gettext_0.16.1-1.diff.gz
patch -p1 < gettext_0.16.1-1.diff

At this point we would run './configure', and then when it was complete we would run 'make' or 'make install'.

./configure
make


But it's not that easy. Gettext *STILL* won't install. Even with the patches. Why is that? Well, because the Debian folks didn't use ulibc. They used the full fledged GNU libc, or glibc. You are still going to get those damned error messages. Grrr! But hey, someone else had to have gotten these errors before. And if you start Googling around you will find what fixes it, which are these two pages:

http://osdir.com/ml/linux.lfs.hardened/2007-07/msg00041.html
http://www.linuxfromscratch.org/patches/hlfs/svn/gettext-0.17-uClibc-1.patch

Here are what the patches entail. Note that these patches were created for version 0.16.1, which was the version I was attempting to build. If I was using the latest and greatest gettext from the folks at GNU, I might have to do some further digging or investigating. As it was, I was able to read the patch snippets and make sense of them. Here are those snippets.


--- gettext-0.16.1/gettext-tools/src/msgfmt.c 2006-11-27 17:02:08.000000000
+0000
+++ gettext-0.16.1/gettext-tools/src/msgfmt.c 2007-07-18 20:12:58.000000000
+0000
@@ -194,6 +194,7 @@
static void read_catalog_file_msgfmt (char *filename,
catalog_input_format_ty input_syntax);

+void (*error_print_progname) (void) = NULL;

int
main (int argc, char *argv[])


And ...

--- gettext-0.16.1.orig/gettext-tools/gnulib-lib/error.h 2006-11-27 18:14:50.000000000 +0100
+++ gettext-0.16.1/gettext-tools/gnulib-lib/error.h 2007-06-20 13:29:32.000000000 +0200
@@ -50,7 +50,10 @@ extern void error_at_line (int __status,
/* If NULL, error will flush stdout, then print on stderr the program
name, a colon and a space. Otherwise, error will call this
function without parameters instead. */
-extern DLL_VARIABLE void (*error_print_progname) (void);
+#ifndef __UCLIBC__
+extern DLL_VARIABLE
+#endif
+void (*error_print_progname) (void);

/* This variable is incremented each time `error' is called. */
extern DLL_VARIABLE unsigned int error_message_count;


To apply the snippets you can:
1) Create two files, with these snippets and save the files as somefilename.diff. Then run 'patch -p1 < somefilename.diff'.
2)

Now, since I had all ready started building my application and bombed in the middle somewhere, I should clean everything up and start over.

make clean
make


Ten minutes or so later, you should be done. And if you didn't get any errors. You can now "make install".

That's it! You are one step closer to compiling some giant peice of software. Now, where was I in the list of dependencies when I got stuck trying to solve this? If you get lost or sidetracked, you might never make your way back to where you were when the problems started. For that reason, I often create a running list for myself. If I try to install one program that requires three more, I document them and use simple tab indentation to indicate what is a dependency. Your end result will be a big messy tree that gives you some indication of how many frustrating hours it will take to get this all done. It's also good to document what you have had to do that is "special" to get something to build. If you have to start over later, it might be good to have those notes.

Here is the "tree" as it looked when I was building gettext. An "X" indicated that I completed it. Question marks mean that I think something might be required, even though the Debian pages didn't mention it as a requirement. In other words, there were massive build failures and I had to take a guess at what I was missing. Your notes and abbreviations may vary.


centerim (4.22.5-1~bpo40+1) - http://packages.debian.org/etch-backports/arm/centerim
libcurl3-gnutls (>= 7.15.5-1)
libgnutls13 (>= 1.4.0-0)
X zlib1g (>= 1:1.2.1)
libcomerr2 (>= 1.33-3)
libidn11 (>= 0.5.18)
libldap2 - (configured with: CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include"
LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib" ./configure,, make depend,, make
install)
X ?? (undocumented requirement) gettext (0.16.1-1) http://osdir.com
/ml/linux.lfs.hardened/2007-07/msg00041.html
?? (undocumented requirement) intltool - installaed intltool-0.40.6
X XML::Parser
X ?? expat - installed expat-2.0.1
?? (undocumented requirement) iconv - installed libiconv-1.9.2
X libgnutls13 (>= 1.4.0-0)
X libgpg-error0 (>= 1.4)
X libgcrypt11 (1.2.3-2)
X libgpg-error0 (>= 1.2)
X liblzo1
X libopencdk8 (>= 0.5.8)
X libgcrypt11 (>= 1.2.2)
X libgpg-error0 (>= 1.4)
X zlib1g (>= 1:1.2.1)
X libtasn1-3 (>= 0.3.4)
X zlib1g (>= 1:1.2.1)
X libsasl2-2 (2.1.22.dfsg1-8+etch1) - installed to /usr/local/lib/sasl2
X libdb4.2 (4.2.52+dfsg-2)
X (undocumented requirement) libssl0.9.8 (0.9.8c-4etch9)

Monday, November 02, 2009

Stupid Zipit Trick - Changing the wallpaper in the Stock OS.

I found it odd that with the stock operating system on the Zipit Z2 there is no method of uploading your own wallpaper image. The current method of theming or customizing the Zipit's appearance is to visit the web site and use their online tool. From there you can pick your wallpaper and a theme which will be "delivered" to your device. But why can't I upload my own wallpaper?

In a conversation with some folks in #zipit I became aware that you can get your hands into the partition that hosts the stock operating system by booting up in the Z2 Shell and exploring the /mnt/ffs directory. It was there that I found my wallpaper image. It was right in the root, and it was named Neon_glow.jpg.

So here is how you can change the wallpaper in the stock OS.

1) Boot up your Z2 Shell.
2) 'cd /mnt/ffs'
3) 'cp yourwallpaper.jpg /mnt/sd0'
4) Remove your SD card and insert it into your PC.
5) Copy your wallpaper over to your PC and open it with an image editor such as Gimp.
6) Open the image of your choosing and resize it to roughly 320x208. Copy this image, and paste it over top of your wallpaper image in your editor. This will ensure that you retain the correct size, color bit depth, etc.
7) Save the image to your SD card under the same name as your present wallpaper.
8) Boot back to the Z2 Shell.
9) 'cp /mnt/sd0/yourwallpaper.jpg /mnt/ffs/'
10) 'poweroff', remove your SD card, and boot up the stock OS.

Fun right?




There is no telling how long this wallpaper will "stay put". I would think that eventually the zipit will re-grab the correct wallpaper from their website. But perhaps it will hang around until you replace it by selecting a new one using the web site? Who knows. My current wallpaper has survived several hours and several reboots.

Hack on!

Sunday, November 01, 2009

Introducing the Improved Z2 Shell (aka Shell with benefits)

I have been cranking away on my Zipit doing all sorts of neat things with it. I want to first thank all of the folks in #zipit on irc.freenode.net and of course the fine people at Zipit Wireless (namely rossimo). They have all been a tremendous help in putting this new image together! Also - big shouts to Hunter Davis (the Zipit hacking pioneer).

Today I am releasing the first of what will probably be several versions of the Zipit Shell with some added binaries. The Z2 Shell is freely available for download from the Zipit Wireless "linux hacking" site. I have taken this shell and added all sorts of interesting new compiled binaries (irc, nmap, etc). I have been amassing a growing collections of add-ons to the generic Shell image and some of them required slight modification to the z2startup.sh script. This script is rather touchy, and screwing is up will render your Shell image useless. Rather than make people download and assemble all of these little code snippets, I decided to create my own "Shell with benefits".

You can download it here: http://www.oddree.com/zipit/Z2S-v201.zip

Here is a "demonstration" video which was poorly shot and narrated by myself.

IZ2S - The "Improved" Z2 Shell v2.01 - (aka Shell with benefits) from Ray Haque on Vimeo.



Here are the release notes from the included README file ...
IZS - The "Improved Z2 Shell" (aka Shell with Benefits) v2.01

ABOUT
This collection was built by Ray Dios Haque out of sheer necessity. I wanted something that I could play with that would not effect the stock software that comes on the Z2. The easiest way to do that was to take the Z2 Shell that was built by rossimo from Zipit Wireless and expand upon it. I take no credit for his work. Be it known that if I don't mention adding it, it was something that Ross built for us. By the way, thank you Ross. This image has been a lot of fun for me and I hope that by releasing this image of my own I can give something back to the Zipit community.

INSTALL
Format your SD card as a FAT or a FAT16 file system. Copy everything from this zip file onto the root of the card (preserving all paths/directories). Insert your SD card into the Zipit and boot it up. Note that you can only boot this image if you are running the Stock OS that came with your Zipit. If you have installed OpenEmbedded or Debian, then you have probably replaced the stock operating system which included a routine to look for the z2script.sh script. For legal purposes, I cannot provide you this stock operating system. Some of the smarter people in the Zipit community might be able to help you restore this OS (see CHAT below).

CHAT
Come chat with us! There is a thriving (?) community of the worlds best Zipit hackers who hang out in #zipit on irc.freenode.net. You can fire up 'irc' from this very image and come hang out.

NEW BINARIES
wget, ircii-20090520 (irc), wireless-tools (ifrename, iwconfig, iwevent, iwgetid, iwlist, iwpriv, iwspy), ftp (ftp, /etc/services), unzip (unzipsfx, unzip, funzip), nmap (nmap, *new* ncat), wpa_passphrase, less (lessecho, lesskey), grep

NEW LIBS
ncurses (libform.a, libform_g.a, libmenu.a, libmenu_g.a, libncurses++.a, libncurses.a libncurses_g.a, libpanel.a, libpanel_g.a)

SCRIPT MODIFICATION(S)
- Added a routine asking if you would like to configure your wireless card. This was not possible before as there was no scanning routine and the image lacked the wpa_passphrase utility. You can now scan for and configure your wireless settings entirely from the zipit.
- Added "cp /mnt/sd0/etc/services /etc/services" which gives the ftp command the port numbers it needs to function.
- Added "cp -R /mnt/sd0/etc/terminfo /etc", "export TERM=vt102", "export TERMINFO=/etc/terminfo" to help irc understand the screen layout.
- Added "ln -s /mnt/sd0/lib/* /lib" to make ncurses libraries usable, and any future libraries that you or I might add.
- Added "ln -s /mnt/sd0/share /share" for nmap and anything else that might require a "share" directory to be present to function.

OTHER MODIFICATION(S)
- Replaced the stock keyboard driver in /modules with one that was created by Kenyon from the Zipit Yahoo Group. This removed all of the problems with keys not working, or repeating while typing. The original drivers remain, but have been renamed to *.orig.

COMING SOON?
- A script to download and install "packages" (zip files) using wget, unzip, and a "binary repository" on www.oddree.com. A similar system could provide updates when I provide them.
- rkdavis from #zipit would like me to add sound to this. I will as soon as I add something to this collection that needs it!
- A terminal based image viewer. I have been messing with a couple, but much of what I have experimented with requires X11 libs. Without X11 on this image that results in some very large and slow moving kludgey code.

IFAQ (InFrequently Asked Questions)
Q. Why does nmap (or some other binary) run so slow?
A. Because everything has to be built "static" to run on the Z2. That means that where you might normally have hundreds of shared libraries on a linux machine, the Z2 Shell must embed the libraries into each running binary. It makes for some bloated inefficient stuff. But, it works. If you want a better system - start writing it! Otherwise, try to limit the actions of what you are doing. For instance, use an address range or port range with nmap. Don't start long running scans on entire networks. This is a Z2 we're talking about. The resources are pretty lean.

Q. How can I add my own binary/package?
A. There are several ways to go about this. The method I have used to compile everything is "scratchbox". Scratchbox is a program which let's you cross-compile applications. That means that you can build stuff for an ARM platform, even though you have a regular x86 machine. It can be tricky and complicated. Try reading up on what I have posted at http://www.oddree.com.

Q. Why did you *insert snarky comment here*?
A. If you find that I did something stupid and inefficient, do let me know. I don't claim to have any expertise in the area of building software. If you have some suggestions on how to improve things or would like to help with the next release of this improved Z2 Shell, email me at ray@oddree.com. I would love to collaborate with some folks who might be more talented than myself.

Q. Will you build *insert package name here* for me?
A. Probably. Unless you are asking me to build something that has an endless list of dependencies. In which case I will probably tell you to install OpenEmbedded or full fledged Debian. They all ready have all of these packages. I am only expanding upon the old Z2 Shell because I find it lean and useful.

Saturday, October 31, 2009

Review: The Asus 1005HA eee PC (I hate Windows 7 Starter Edition)

My wife has never had a new computer. Ever. Two years ago I refurbished a junker from the basement by loading it up with a new motherboard, CPU, etc. Two months later it died. She was so jaded and angry with the whole thing that she didn't want a new one. She just accepted a cash refund for the parts and spent it on other stuff. Since then, she has been through a few more hand-me-downs and at the end of the day she usually sits in bed with a hand-me-down laptop that sounds like Chernobyl melting down.

This year I decided to get her a new PC. I wanted it to be something that she could take up to bed with her and keep away from the kids. So I took the logical route and got her a netbook. The guys at the office questioned my choice and reminded me that for another $100-$200 I could get her a full fledged laptop. But my wife has very limited needs when it comes to computing. She really just wants a working browser, and a Word processor to use every now and then. I have had an Asus eee PC for a couple years now and I have really enjoyed it. It was a logical choice to get her the latest in Asus technology.

I went with the Asus 1005HA. This was a pretty good fit for what she needed. It had a lot of storage for a netbook (250GB), a decent amount of RAM (1GB), and ... a processor. The CPU is nothing to write home about, but let's face it - she won't ever put this to it's full potential. Also - it came in colors. And I was able to get her a pink laptop.

There was some risk involved in buying this for her as I bought it on the release date. Nobody had really seen this thing yet other than some douchebag bloggers who were paid or gifted things. And you can't really trust those guys (you know who you are). So I took the plunge and ordered it. I figured that in the worst case scenario that it completely sucked balls - I could return it to NewEgg and trust that I would get my money back. There were other perks buying it from NewEgg. There was a free shipping deal (slow, but free) and also a free gift! The gift is an Asus USB transfer cable which tethers two PC's together. It looks handy. I haven't used it.

About a week later, the netbook showed up on my doorstep. I decided I wanted to let my wife be the one to open it rather than try to set everything up before hand. That might have been a bad idea.

After unpacking the laptop and admiring it's overall look, we were both pretty impressed. My eee PC is rather boxy and old fashioned looking. My wifes was very sleek, with smoothed out edges and a beveled lower half. The bottom vents are angled in a way that you can sit this thing on your lap without choking it out. The keys are BIG! While I have little "chicklet" keys on mine, this model has a very REAL keyboard. The only thing I would have liked to see changed there is the arrow keys. The up and down arrows share a single key-space. Why?

The touchpad uses that new "multi-touch" technology which is pretty neat for scrolling, zooming in and out, etc. It's also flush with the wrist rest. In other words, there is no telling where the touchpad begins and ends because it all runs together in the design. The continous mouse button bar of course tells you where you should begin your multi-touching. Design-wise I was very, very, impressed.

Then we booted it.

Please wait a moment while I climb aboard this soapbox and speak directly to the fucking idiots at Microsoft for a moment. This is for you, Ballmer.

WHAT THE FUCK WERE YOU THINKING WITH WINDOWS 7 STARTER EDITION?!?!?! I mean, are you SERIOUS with this SHIT?


My wife sat down, and booted her laptop for the first time ever. Her first challenge was finding the language we speak. English, was at the bottom of the list. It's frustrating when you are trying to figure out a new mousepad and use the oddly placed arrow keys. It's equally frustrating to watch someone else do it (knowing that if they accidentally pick French, it's going to be a rough night of re installation). After going through the usual series of prompts asking for things like "your name" and timezone, it told us that it was "Initializing". At this point there was no indication of progress. Just a hard drive that buzzed along and looked like it was doing something.

40 minutes later. I REPEAT - FORTY FULL MINUTES LATER ... Windows 7 began to boot up for the first time. My wife wasn't there to celebrate this majestic beginning with me because she had other shit to do and had left the room after the first 30 minutes of waiting. What the hell was all that waiting about? It was installing updates. I know now, because the first thing it did (after finishing a very, very, VERY slow boot process) was tell me that Windows had "recently installed updates". It would have been nice to know that instead of just seeing "Initializing" for all that time. But, I digress. I watched patiently while my wife explored things.

Despite my best efforts to get my wife to use something other than Internet Explorer, she always goes back to it. It's not so much a problem any more as Internet Explorer 8 has improved quite a bit when it comes to security. She launched Internet Explorer. And waited. Before her eyes, it was as if a team of "paid by the hour" painters showed up and began to paint the display for her. They may have stopped for lunch sometime after the Favorites bar was up.

This was not a good sign.

She clicked the Start Menu. And waited.

She loaded a web page. And waited.

Waiting seemed to be what Windows 7 was good at. And every time she clicked on anything (menu bars included) there was a delay while Windows appeared to go out to lunch. At this point I thought something might be horribly wrong. She handed me the reigns.

I poked and prodded a few settings. I tried to see if there was Antivirus agent slowing us down (but it was a trial from Trend which hadn't been activated). I thought maybe some add-on software was running amuck in the background. It wasn't. Things were relatively normal. But SLOW. Then I decided to go into the PC Properties and see how Microsoft rated this machines performance on the "5 point scale". There was not yet a rating established, so I clicked the link to run the wizard. But there would be no rating today. I was told "Windows 7 cannot rate this model". Why is that? Afraid of the embarrassing score you are going to get on brand new hardware?

Also - there were more updates. My wife always shuts her laptop down. She doesn't need to. But she has that nagging feeling in her mind that if you aren't using it, you should close it down and put it away. I get that. But every time she has shut this laptop down there have been updates. EVERY TIME. This netbook has averaged between 2 and 8 updates every time it's shut off. Microsoft ... WHAT THE FUCK ARE YOU DOING?

Then came the final insult.

She wanted to change her wallpaper. That seems simple enough. She went out to NFL.com and pulled up one of her favorite players. She right clicked the image and chose "Set as Desktop Background". But then it wasn't there. She did it again. Still no wallpaper. No matter what she chose, she was stuck with an ugly blue Windows logo for her desktop wallpaper. At this point I started search. Lo and behold - YOU CANNOT CHANGE YOUR DESKTOP WALLPAPER IN WINDOWS 7 STARTER EDITION!

I thought the whole idea of Windows 7 Starter Edition was that it was crafted for netbooks, right? WRONG. The concept of Windows 7 is that Microsoft gives it to you for a "reduced price" (resulting in a cheaper laptop) but then removes key features that you would want to use. Starting with ... no desktop wallpaper.

Remember Windows 95? You could set desktop wallpaper on that. Remember that horrible Windows Me OS? That had desktop wallpaper. Of all the fucking things to TAKE AWAY from a user .... you take away the ability for them to personalize their desktop? FUCK YOU MICROSOFT! Here is a new ad campaign I came up with to replace the terrible commercials that you come up with. It's based on the film Goodfellas and it goes something like "Fuck you, pay me". Want to change your wallpaper? Fuck you, pay us!

At this point, I told my wife - "if you want me to reload this with something else, I will gladly do it". We decided to let her go on a few days with what was loaded on it because perhaps we were not giving Windows 7 a chance. After all, I had run a Beta of Windows 7 on my desktop PC and I rather liked it! It actually ran faster than XP had and the features were downright fun.

Here I am almost a week later, installing Windows XP.

This is where Asus gets a saving grade for selling this netbook. While other manufacturers might not give you the option or the drivers to "downgrade" a brand new netbook like this one - Asus does. A quick visit to their website allowed me to download EVERY required driver that I needed. For that matter, I can even download all the additional software that came preloaded (some of which is very useful, like the "hyperdrive" application for speed/battery usage adjustment).

Asus, I love you.

While it may not be easy installing XP to a netbook with no CD/DVD ROM drive, or floppy drive, I do have the external drives from the office to help me out in that department. I just happened to loan them out over the weekend in anticipation of what was probably going to be quite the job.

It took a couple of hours but I was able to get all of the drivers from the Asus site and merge them with a Windows XP disc I have using the freely available nlite utility. With that disc and an external DVD drive, installing XP was a cinch. Although none of the utilities I downloaded would install. Most of them looked like they were damaged zip files as nothing had an icon associated to it. Perhaps someone uploaded them as "ASCII" files. Who knows. The only utility that I absolutely HAD to have was the Super Hybrid Engine (which turns up the speed for your CPU when you are plugged in, and dumbs it down when unplugged). I found that I could use the utility from an older generation Asus netbook and it worked just fine.

Being that things turned out the way they did, it's hard for me to give this netbook a raw score. The hardware is really spectacular. But the operating system that shipped on it is absolute dog shit. People are going to be getting these things for Christmas and I really feel sorry for them.

Sometimes I wonder if Microsoft has unknowingly hired moles from Apple who write really bad code, and make really stupid marketing decisions. If so, congratulations Apple. It's working!

Sunday, October 25, 2009

My Zipit Z2 + IRC on the Zipit

My wife and I bought a Zipit Z2 for my daughter for Christmas. I was tasked with making sure that the device works since we bought it off of eBay. It works! The problem is that in testing it, I attached my profile to the device and activated the free year of text messaging. Woops! I guess it's mine now. Oh well. They are only $50 which is a pretty good deal for how sweet this thing is. So I bought another one. I will leave that new on in the package.

Anyway - I was impressed with the software that comes on the Z2. It's more or less for messaging your friends, and maybe listening to some music. Or - both. The screen is exceptionally nice (which is weird because it was built for texting). The built in speaker isn't bad either considering what a tiny little device this thing is. I went onto the Zipit Wireless web site and proceeded to theme my device. It seems backwards. But the idea is that you sit down to a PC with Internet access and log into your account. Then from there, you pick your wallpaper and your favorite streaming radio stations (the list is pretty long, but some of the stations are broken). You can also pick an overall "theme" which consists of different colored borders and transparent backgrounds for your pop-up windows. Niiiiiiice. After picking your theme and such, your device is sent the "go get it" message and downloads and installs everything. Easy! And pretty damned cool.

I loved the installed software so much, I really don't want to change it. At least not yet. While I could put the OpenEmbedded OS on it, I would rather keep the stuff that the engineers intended for it to run. At the same time I would like to add the one thing that the Z2 is missing - an IRC client!

The problem with the native OS that comes on the device is that the source code for it is not available (and probably never will be). The Zipit Wireless folks are fine with you hacking their device, and they even seem to give you some guidance on how to do it - but their OS is off limits. Most likely because it was developed contractually. So I would like to add some functionality, but not scrap the fun little OS. And it can be done! The Zipit folks have given you the ability to boot directly from the SD card slot on the front of the device. And they have created a few downloadable chunks of executable code to try it out.

By using scratchbox from the development VirtualBox that I made I was able to compile the ncurses library, and ircii for the Zipit's ARM processor. When I built them, I added the --prefix=/home/zipitdev/opt to the end of ./configure. That way when it was all done I could merge the built stuff with the Zipit Shell image which is freely available. In the end, I merged my stuff with the bootable image stuff. And now all I need to do is to copy it onto a Mini SD card and fire it up.

Here's the problem. I have a 2GB Mini SD card, but the SD adapter that it fits into was broken up by the intern at work. No problem, I thought. I will just buy another Mini SD card or a new adapter. But people are running out of stock on these cards and not ordering more. The price has gone up on them. What should be old and obsolete is "rare" and "valued". Geesh. Maybe I will venture out today and see if I can find a card, or a USB adapter from one of the dime stores up the street.

In the mean time, if anyone wants to try out my "Z2 shell with links and irc" image you can download it here. Until I say otherwise, this is untested. So don't be mad at me if it doesn't work.

Also ... late into the night I started reading old IRC logs for the #zipit channel on freenode and I could see that there is all ready an ircii client compiled for the Z2 under the Debian image (also widely available). Ooops. :-)

Thursday, October 01, 2009

I WAS ON AOTS!

Okay, I myself was not on AOTS today. But I sent in a fax and they printed it, and handed it to Olivia. My terrible 30 minute MS Paint job made it onto cable television! She even tried to pronounced my name, Ray Dios Haque (which by the way is pronounce ray-dio s-hack - or Radio Shack).

Here is what I faxed to Kevin and Olivia ...



What's fun about faxing something is that it looked pretty awesome having been converted to grayscale and deprived of good quality.

Here is what it looked like in Olivia's hands ...



There are all ready clips up on the web site from today's show, so here are a few to prove that I really am this famous. REALLY.





Also - if you still don't own a Zipit, you should buy one and help me earn one by buying it using my link! Please?

Monday, September 28, 2009

Zipit Z2 Development "Kit"

I was reading over the weekend about how you could install "scratchbox" and use it to build software for use on your Zipit Z2. I do not own one of these yet, but when I get one (and I will) I will probably want to go right to work on developing new applications or compiling existing ones to experiment with.

If you don't all ready have a Linux box set up, it could be quite a bit of work to prepare a development platform to use. I opted to create a VirtualBox for this purpose. Assuming that other folks are going to be building Linux boxes just to compile applications, it only makes sense to share my VirtualBox creation.

I have created a Torrent which includes a Debian 5 VirtualBox image which had scratchbox installed and configured out of the box. Unpack it, boot it, and get to compiling! Note that this is a compilation of entirely *free* software. No funny business or illegalities here.

The torrent can be found here: http://thepiratebay.org/torrent/5103140 and because TPB has been having "issues" lately you can also get it here: http://isohunt.com/torrent_details/133678149/?tab=summary

Seeding this first day is going to be slow. Tomorrow I will bring the Torrent into the office with me and kick up the bandwidth a bit.

If you haven't seen the Z2 in action yet, check out this site.

Sunday, September 27, 2009

You need a Zipit

I just signed up to be a Zipit Wireless Affiliate.

The Zipit is a little wireless gadget that looks like a hand-held laptop and provides you a method of texting your friends (through cellular networks), Instant Messaging your 'buddies' through various IM protocols, listening to your music (it has a Micro SD card slot), playing Internet Radio ... and more.

The creators of the device built it around an open source Linux kernel, and encourage application development. It's a pretty brilliant idea.

Also, the things are only $50. So you need one, right?

I plan on putting together a page dedicated to these hot little gadgets once I get my "affiliate kit" and such.



** EDIT : The affiliate program appears to be done and over so I have removed my links to the now defunct web site. There is talk of a new program starting up and I have asked to be involved. If it ever develops, I will Blog about it. **

Sunday, August 23, 2009

Using Vista Webcam Drivers in Windows 7

Back when Windows 7 came out in BETA I was quick to download and install it. I was not at all surprised when my webcam didn't work with it as I remember this being a problem with Vista. I think I ran Vista for about 1 month at home and work before giving up on and going back to XP. But now Windows 7 is right around the corner as a "real" operating system. So why would they still not have a driver for my webcam?

Ah, the wonders of capitalism. Could they create a driver for my old webcam that would work with Vista? Sure they could. But they would have to pay someone to sit down and develop that code. And that money would be a waste, because we expect our drivers to be free. Since this is a device that I all ready own and have owned for a while, there is no sense in spending money on new driver development. But whatever happened to customer service?

Today I decided to give this webcam driver issue another try. I went out to Creative Labs web site and downloaded their "Windows Vista" driver for my webcam. When I ran it, the installer did an OS check and said "we don't support this version of Windows". So then I opened the .exe file with WinRAR and extracted the files into a directory. From there I was able to right click on the setup.exe file and run it in "troubleshooting mode". This mode in Windows 7 allows you to try and run things as if you are using an older operating system. In my case I faked like I was running Windows Vista. The install completed, and the driver seems to work. I immediately fired up Skype and was told "you have working video".

A big thanks to the developers of Windows 7. And a big "up yours" to Creative Labs. Looks like it will be another couple of years before you get any more of my money. ;-)

Wednesday, August 12, 2009

The Great Health Care Debate!

This whole battle for health care reform might be a little easier if folks would sit down and read the house bill that congress has suggested. I have always been one of those guys who would rather read "the straight dope" than take a fools word for it. So I wonder why so many fools are crowding into town halls and attempting to thwart this latest house bill. For that matter, people are making some really, really, really ignorant comments just about every where. Like Facebook!

Why do we need a nation wide health care system. Why not leave it to the states?

How is your state doing financially? You have an 8 in 50 chance of them not being over budget as of today. Are they going to invest anything into fixing health care? No.

Why not try medical savings accounts like in Singapore?
We have those plans here. Unfortunately small businesses end up having to use these. Go to your bank and tell them you want a "Health Savings Account". They will gladly give you one. This plan should be called "pay for everything yourself" - with tiny contributions from your employer". Good luck trying to pay for cancer treatments without any financial help. I recently had 5 stitches on my hand and it cost me $1,000.

Sounds like Acorn, doesn't it?
Does it? Let me spend 30 seconds researching this. Here's what I have: "ACORN is the nation’s largest grassroots community organization of low- and moderate-income people with over 400,000 member families organized into more than 1,200 neighborhood chapters in 110 cities across the country." Health care reform sounds like ACORN? No. Stop watching Fox News, idiot.

Politicians hold town meetings to have a "dialogue" with the people in their communities, but when people in their communities disagree with them the politicians just want them to just shut up.
Maybe you should be watching the entire clips, and not just the ones that your particular news outlet is showing you. The politicians are being drowned out, booed, and intimidated by protesters. These town-hall meetings were assembled with the idea that people might be civil and respectful to each other. I have yet to see a politician tell anyone to "shut up". Unless you count the case of the idiot who stood up and spoke out of line. Correct me if I am wrong, but I believe that the un-named politician replied that "everyone present just witnessed real democracy".

let's all take a deep breath, take some time to read the bill, yes, actually read the bill. Insist that the legislators we hire actually read it too. Those who said they would vote for it without reading it should be voted out next election.
This came from someone who is opposed to the bill. I applaud his educated decision. Although, this coming after some rather ludicrous comments about "looking like ACORN".

we have the most expensive health care system in the world, folks. we rank 37th in mortality rates.
Woops. Facts are emerging. Stop that!

cuban healthcare is free - but the cuban doctors are buying boats and escaping to the good ole USA. of course michael moore is quite enarmored with the cuban system
What is it that they say on 4chan? Obvious troll is obvious.

And just think, this was all from a single thread. Seriously folks, if you want to have a say in this discussion you should start by reading the actual house bill. Then perhaps you can show up to a discussion with your local representatives (without a sign or an insulting t-shirt) and address your questions in an orderly manner.

Although, if you want to play the roll of "stupid fucking facebook troll", jobs are available. Speaking of jobs ... what the hell do these assholes do for a living? I have to take a day off to find time to Blog shit like this!

The No-Nonsense Guide to XBOX 360 Backups

Long, long, ago I wrote a how-to guide for installing Windows SharePoint Services. I was teaching a class at the time on the subject and there didn't seem to be any good resources on how to install things correctly. The guide served two purposes. One was that I could promote myself as an instructor who brought his own supplemental material to the class as a fill-in for where Microsoft went wrong with their training materials. Secondly, I hoped to sell the book online to make up for some of the time it took to put the guide together. To my surprise the book went on to sell many copies grossing almost $200 in sales. This may seem marginal, but I figure that it at least paid for the short amount of time I spent writing the guide.

Last week I decided to write a new guide. I have spent a lot of time lately backing up XBOX games for my son. In the beginning, I wasted a lot of time trying to figure out the process. Part of the problem is that the so-called "experts" on the subjects are younger folks that write in incomplete sentences and often leave out important details of the process. Some guides that I read were just plain terrible.

With that, I have written a new guide on how to backup your XBOX 360 games. It's on sale at LuLu.com for the low, low cost of $6.25 (that's $5 profit for me). I no longer have to wonder if I will sell any copies, because my first copy sold a day after it was posted. And the buyer gave me a full 6 out of 6 stars in a review. And that buyer was NOT my mother!

If you would like a preview of the book I have extracted a few pages as a sample.

If this is something you need, please buy a copy and support ODDREE.com.

Support independent publishing: Buy this multimedia on Lulu.

If I can find the time, I will also be writing a "No-Nonsense" guide on how to modify your XBOX 360 (to play the games you create). This guide is probably needed more than the one I just wrote, but I know it will take considerably longer to do - and will require frequent updates.

Friday, July 31, 2009

Can I get an update on that?

There are two things that I find very frustrating in todays technology age. The first is when someone makes a terrible product full of bugs. But even more frustrating is when the problems get fixed, and the fixes don't get delivered. Here are some examples.

A few years ago I got a new phone to use for work. It was an HTC Apache phone. Of course, every time I called my Sprint technical support about one of these phones (which was often) they always acted like they didn't know what I was talking about. I would say "I guess you guys call this a '9700'" and they would respond with "oh yeah, it's not called an Apache". This would result in my schooling a recent high school graduate in why it would make better sense if Sprint would just stick to the model names and numbers assigned by the manufacturer rather than make up their own clever nicknames. But I digress.

My HTC Apache was a piece of total dogshit! This is not just my opinion. Everybody returned these phones. What I ended up finding (after months of screwing around with that brick) was that the Operating System was to blame for most of it's problems. What OS? Windows Mobile 5! At the time the phones were delivered to us, Windows Mobile 6 had long been released. So I called Sprint and said "I would like to upgrade my phone". "Easy!", they said, "you just need to call *228". But that updates the list of cellular towers, not the phone's operating system. After a lot of arguing with various people (including our sales account representative) I was told "we do not provide software updates to our phones". That's interesting. This is the equivalent of buying Windows XP and being denied access to the service packs for it. Never mind that a software update for the phone would have saved the account we had with them. We have since switched to Verizon and our local Sprint "business" division bit the dust (HARD).

I am not just picking on Sprint. My Verizon phone is an EnV2 which I really like. The only complaint that I had about it was that it only takes one button press to unlock the phone and start dialing. That one button, is the "OK" button. Needless to say, the call volumes from the inside of my pocket shot through the roof my first week of use. I tried calling Verizon and they gave me a similar song and dance telling me that I would have to lock my phone with a password to prevent butt dialing. I suggested that I am a "smart-ass" and my ass might guess the bad passwords that I always use. They disagreed.

After a bit of searching on Google I came across a group of angry phone users who had the same problem. It seems that the manufacturer of the phone, LG, had long since released an update for the phone which allowed for a two-button unlock method. Verizon (of course) did not support this update, nor allow users to perform it themselves. Well, FUCK YOU Verizon, I downloaded it from a bit-torrent along with the software that your in-store staff uses and I performed the update anyway. Since then, I have been very, very, happy with my phone. An no more butt-dialing.

And here I am at example number two.

The past few days I have been copying mass amounts of medical records to my PC so that I can archive them to DVD. This will satisfy a backup requirement that I have, but also takes a lot of time and patience. We are talking about burning 3TB's of storage, at 2.4x speed. Ugh. I can handle all this burning. What I can't handle is my PC locking up on me and requiring a reboot. After about the 10th time I locked up this week, I narrowed the crash down to deleting mass amounts of stuff. If I selected a number of gigs and tried to delete it all at once, my OS (Ubuntu Jaunty) would freeze.

A bit of searching lead me to a long running bug report which explained that this is a problem with the kernel I am using and the ext4 file system. What is the fix? Installing a newer kernel. Being the wise guy that I am, I always check for and install updates when I have problems like these. So why didn't I get the fix? Because Ubuntu didn't release it ... yet.

I guess it's not just vendors being lazy, stupid, and greedy that account for problems like these. It also happens with open source software.

This is one of those times that I really hate technology, and how we use it.