IdeaAs I spend some time getting to know my Gumstix better, some project ideas are starting to come to me. I am really starting to see some of the potential that is in this little computer.

Here is a list of some of the project ideas I have. At this point, I really do not know whether or not I will attempt all/any of these projects or even if they are feasible but it sure is fun to brainstorm.

  • KVM over IP with integrated SSH VPN tunneling. The ability to securely revive a dead computer or even make BIOS level changes to a system from anywhere in the world via the Internet. Could even potentially integrate PPPoE or UPnP to bypass or go through some firewalls.
  • Home Monitor. Embed Gumstix devices into the house and have them work together to monitor and manage different aspects of the home.
  • Embedded Web Based Controller for Non-Networked Devices. Create a modular Gumstix device that can sense and monitor a number of different factors (e.g. temperature, humidity, voltage, etc.) and then create a web interface for it so that it can be inexpensively integrated into consumer electronics.
  • Terminal Server Terminal. A simple terminal that can connect in to any of the standard terminal services (e.g. RDP, Citrix, NoMachine NX, LTSP, 2X ThinClient, VNC, etc.). Could simply be a port of ThinStation.
  • RC Car/Airplane Autopilot. Control an RC vehicle via GPS to perform various tasks withing human intervention.
  • RFID/Magnetic Card Processor. Be able to read and decode these devices.

There are probably a lot of other things out there that could be done but at this point, that is what I have. What other things do you think I could be doing with the Gumstix?

If you found this post useful, why don't you buy me a cup of coffee to show your gratitude?

Computer ModificationsAs I mentioned in a previous post, there is a lot for me to learn about the Gumstix environment. But, I am starting to learn that, because Gumstix is Linux based, a lot of the the different commands and options for setting up the Gumstix are exactly the same as they are for its other text based Linux counterparts.

Changing the Root Password

A good example of this is changing the password. Once I logged in as root, all I needed to do was issue the passwd command and I was able to set the password to whatever I wanted it to be. This is what that process looked like.

# passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
Enter new password:
Re-enter new password:
Password changed.

Just as a side note, you do not have to use a combination of upper and lover case letters and numbers as mentioned in the prompt.

I also tested to see if the root password change survived both a reboot and a shutdown, power removal, and restart. The changed were kept for all of these tests. Apparently, the changes that I make are stored permanently in the system’s flash.

Preloaded Software

I have discovered that there is a list of preloaded software on the Gumstix. From the website, here is the most up to date list of pre-loaded applications that I could find:

Area Pre-loaded Software
System Linux, busybox, hotplug, mtd-utils, pcmcia, u-boot
Communications Bluez, sshd, hostap-conf, links, lrzsz, ntp, rendezvous, udhcp
Web/Database/Scripting Boa (an HTTP server) and wget (an http client)
Libraries/Miscellaneous uclibc
Audio Aumix, bplay, madplay

Setting up a Development Environment

Since Gumstix is Linux based, I needed to get a development environment running so that I can pick and choose which applications I want to use. There are a number of options that were available to me but I decided on a bit of a unique solution.

I fired up my VMware server and decided to build a virtual Ubuntu server according to the Gumstix website. This way, I could still use my Windows box and not have to build a dedicated system for my Gumstix development.

To set up my virtual development environment, I followed these steps:

  1. Set up a basic Ubuntu server without DNS or LAMP services
  2. Enables the universe and multiverse components for Ubuntu:
    • sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
    • sudo nano /etc/apt/sources.list
    • Remove # from before universe and multiverse commands and save the file
  3. Update and upgrade Ubuntu
    • sudo apt-get update
    • sudo apt-get upgrade
  4. Install development tools:
    • sudo apt-get install build-essential libncurses-dev bison flex texinfo zlib1g-dev gettext autoconf
  5. Install pre-build dependencies:
    • sudo apt-get install subversion wget
  6. Install post-build dependencies:
    • sudo apt-get install ckermit tftpd-hpa lrzsz
  7. Checkout the source code from the Subversion website:
    • svn co http://svn.gumstix.com/gumstix-buildroot/trunk gumstix-buildroot

That’s about as far as I got but I should be about ready to make and compile my own custom version of the Gumstix OS.

Stay tuned!

If you found this post useful, why don't you buy me a cup of coffee to show your gratitude?

GumstixWell, my Gumstix arrived the other day and I was able to finally get a chance to work on it.

Even though I knew they were the size of a stick of chewing gum, I was still shocked to see how small it really was! My mind still boggles at the fact that this is a fully operational Linux computer on this little motherboard!

There are going to be a number of different things that I am going to have to get accustomed to before I am going to feel completely at home with this new computer but I am really looking forward to playing around with some of the abilities that it will provide me.

In this post, I am going to talk a little bit about my first experience with my Gumstix and what things looked like on first boot up.

Initial Hardware Configuration

Motherboard
Connex 400xm Motherboard

The first thing that my wife asked me when she say the Gumstix computer was, “How do you do anything with it?” This was a very valid question, especially coming from someone who is accustomed to the “traditional” configuration of a computer. That is, a case with disk drives, keyboard, mouse, and a monitor. The Gumstix has none of those. So, how do you work with it?

Luckily, I have some experience with non-traditional computing systems such as network appliances. The key to getting access to these devices is to connect to them via a serial cable.

Tweener
Tweener Board

In order to do this, I needed to connect the motherboard to the tweener board. The tweener gives us a few abilities but the two things that it allowed me to do were to give the motherboard power and connect to it with a serial connector.

It was simple to snap the two boards together, making sure that the tweener board was sticking out from the motherboard. I then connected the serial cable that I purchased from Gumstix to the serial port on my computer.

In order to see what was happing on the Gumstix computer on my Vista laptop, I needed to install terminal software and point it to my serial port that was connected to the Gumstix. Since Vista does not come with HyperTerminal, I used PuTTY to connect to the serial port (PuTTY added serial port access in version beta 0.59 on January 24, 2007, six days before Vista launched!).

It was also important to ensure that the serial connections were set up properly. The connection settings are very similar to that of other network devices with serial connections. The specific connection settings for Gumstix are:

  • Speed (baud rate) - 11520
  • Data bits - 8
  • Stop bits - 1
  • Parity - None
  • Flow control - None

Once I set these up, I was ready to start my PuTTY terminal session. I plugged power in to the tweener board and prepared for the first boot.

First Boot

To be honest, the first boot wasn’t all that exciting. A lot of text whizzed by faster than I was able to read it. Luckily, PuTTY let me log the entire transaction. Here is the complete boot process from start to finish. Admittedly, it isn’t very exciting but I include it for reference. I would not blame you if you were to skip ahead.

U-Boot 1.1.4 (Nov 6 2006 - 11:20:03) - 400 MHz - 1161*** Welcome to Gumstix ***

U-Boot code: A3F00000 -> A3F25DE4 BSS: -> A3F5AF00
RAM Configuration:Bank #0: a0000000 64 MB

Flash: 16 MB

Using default environment

SMC91C1111-0

Net: SMC91C1111-0

Hit any key to stop autoboot:

Instruction Cache is ON

### JFFS2 loading 'boot/uImage' to 0xa2000000

Scanning JFFS2 FS: done.

### JFFS2 load complete: 784636 bytes loaded to 0xa2000000

## Booting image at a2000000 ...

Image Name: uImage

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 784572 Bytes = 766.2 kB

Load Address: a0008000

Entry Point: a0008000

OK

Starting kernel ...

Linux version 2.6.18gum (craig@azazel) (gcc version 3.4.5) #1 Mon Nov 6 11:18:37 PST 2006
CPU: XScale-PXA255 [69052d06] revision 6 (ARMv5TE), cr=0000397f
Machine: The Gumstix Platform
Memory policy: ECC disabled, Data cache writeback
Memory clock: 99.53MHz (*27)
Run Mode clock: 398.13MHz (*4)
Turbo Mode clock: 398.13MHz (*1.0, inactive)
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Built 1 zonelists. Total pages: 16384
Kernel command line: console=ttyS0,115200n8 root=1f01 rootfstype=jffs2 reboot=cold,hard
PID hash table entries: 512 (order: 9, 2048 bytes)
start_kernel(): bug: interrupts were enabled early
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 63268KB available (1292K code, 250K data, 64K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
NET: Registered protocol family 2
IP route cache hash table entries: 512 (order: -1, 2048 bytes)
TCP established hash table entries: 2048 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 2048 bind 1024)
TCP reno registered
JFFS2 version 2.2. (NAND) (C) 2001-2006 Red Hat, Inc.
Initializing Cryptographic API
io scheduler noop registered (default)
pxa2xx-uart.0: ttyS0 at MMIO 0x40100000 (irq = 15) is a FFUART
pxa2xx-uart.1: ttyS1 at MMIO 0x40200000 (irq = 14) is a BTUART
pxa2xx-uart.2: ttyS2 at MMIO 0x40700000 (irq = 13) is a STUART
pxa2xx-uart.3: ttyS3 at MMIO 0x41600000 (irq = 0) is a HWUART
Probing Gumstix Flash ROM at physical address 0x00000000 (16-bit bankwidth)
Gumstix Flash ROM: Found 1 x16 devices at 0x0 in 16-bit bank
Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
cfi_cmdset_0001: Erase suspend on write enabled
Using static partitions on Gumstix Flash ROM
Creating 2 MTD partitions on "Gumstix Flash ROM":
0x00000000-0x00040000 : "Bootloader"
0x00040000-0x01000000 : "RootFS"
TCP bic registered
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a54: 0x0201 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a58: 0x0605 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a5c: 0x0a09 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a60: 0x0e0d instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a64: 0x1211 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a68: 0x1615 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a6c: 0x1a19 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a70: 0x1e1d instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a74: 0x2221 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00322a78: 0x2625 instead
Further such events for this erase block will not be printed
VFS: Mounted root (jffs2 filesystem).
Freeing init memory: 64K
NET: Registered protocol family 1
smc91x: not found (-19).
CPLD responded with: ff
Initializing random number generator... done.
Starting 32kHz clock...Settled
Set (AF1,out,clear) via /proc/gpio/GPIO12
Starting Bluetooth subsystem:Trying baud rate 57600...
Set (GPIO,out,clear) via /proc/gpio/GPIO7
Set (GPIO,out,set) via /proc/gpio/GPIO7
No response after reset
No response from BT module
Trying baud rate 921600...
Set (GPIO,out,clear) via /proc/gpio/GPIO7
Set (GPIO,out,set) via /proc/gpio/GPIO7
No response after reset
No response from BT module
Trying baud rate 115200...
Set (GPIO,out,clear) via /proc/gpio/GPIO7
Set (GPIO,out,set) via /proc/gpio/GPIO7
No response after reset
No response from BT module
Trying baud rate 57600...
Set (GPIO,out,clear) via /proc/gpio/GPIO7
Set (GPIO,out,set) via /proc/gpio/GPIO7
No response after reset
No response from BT module
Can't initialize device: Success
Starting network...
udhcpc (v0.9.9-pre) started
Dec 31 16:01:05 udhcpc[215]: udhcpc (v0.9.9-pre) started

pxa2xx_udc: version 4-May-2005
usb0: Ethernet Gadget, version: May Day 2005
usb0: using pxa2xx_udc, OUT ep2out-bulk IN ep1in-bulk STATUS ep6in-bulk
usb0: MAC 5a:1c:3d:ae:35:61
usb0: HOST MAC 5a:1c:3d:ae:35:62
usb0: RNDIS ready
Nothing to flush.
NET: Registered protocol family 17
udhcpc (v0.9.9-pre) started
Dec 31 16:01:06 udhcpc[247]: udhcpc (v0.9.9-pre) started

Dec 31 16:01:06 udhcpc[247]: [truncated]

cfio: module license 'unspecified' taints kernel.
Before register driver
After register driver
Error for wireless request "Set ESSID" (8B1A) :
SET failed on device mwlan0 ; No such device.
Starting Rendezvous:
Starting dropbear sshd: OK
Starting httpd...

Welcome to the Gumstix Linux Distribution!

gumstix login:

At this point, I needed to log into the system. The default username/password combination for Gumstix computers is root and gumstix so I entered the information and got the typical Linux # command prompt.

I did a bit of digging around and discovered that the file system looks very similar to many other Linux file systems.

My To Learn List

That was about as far as I got on the system. But, from this very basic introduction, there are a number of things that I have discovered that I need to learn:

  • How to use vi, the text editor, to edit files on the system (since I am more of a nano guy)
  • How to copy files between my laptop and the Gumstix system
  • Determine if files remain on the system in flash or do I need to add external storage
  • How to change the root password and add users

Still Excited…

There is so much that I want to explore with this system. I want to determine what it can do and how far I can push it before it pushes back. I also want to see if it can replace some of the big systems that I now have running in my network environment.

Stay tuned.

If you found this post useful, why don't you buy me a cup of coffee to show your gratitude?

GumI’m always on the lookout for new and interesting tech toys. Now, that doesn’t make me a whole lot different from 99% of the men in the world. What does differentiate me from some of these other guys is the fact that my tech toys sometimes tend to be on the really geeky side.

Take, for example, my latest tech toy that I have decided to purchase. I just spend a little over $400 on something called Gumstix. Now, before you determine that I am out of my mind for paying $400 for gum, let me explain to you exactly what Gumstix is and why I think it is so cool!

From the Gumstix website:

Gumstix, inc. maker of the world’s smallest full function miniature computers (FFMC,) brings gum stick size, 20mm x 80mm x 8mm Linux motherboards to designers providing easy design flexibility and open source at nearly half the price of and a third the size of all other offerings.

Essentially, you have a full blown computer on a motherboard the size of a stick of gum! Everything is open source so you can share code and resources with other developers.

When I saw this, I just had to get my hands on some of this technology because the possibilities are endless. So I went to their company website and ordered some stuff. This is what I have coming:

The one module that I did not purchase (because it was out of stock) but I really want is the robostix. According to the website, here is what it does:

robostix runs code as a stand-alone microcontroller or attach it to a gumstix platform through the 60-pin connector for maximum programming capabilities. robostix also connects to your existing computer using a cable for In Systems Programming

This can be summed up in two words: robot brain! But, I am thinking that there are a lot of things that I will be able to do with my Gumstix computer with just what I have ordered.

I’ll keep everyone in the loop with this new technology so that you can see some of the (hopefully) cool things that I will be doing with it. Just as a sampler of some of the things that people are doing with it, here is a fish robot that is based off Gumstix that is being used in the London Aquarium:

This is an actual swimming robotic fish. It is completely autonomous and attempts to simulate the natural movements of fish as much as possible.

Gumstix Links

If you found this post useful, why don't you buy me a cup of coffee to show your gratitude?