or, an Excruciatingly Detailed Guide to creating a MIPv6 iPAQ mobile node.
Assumptions: 1. You already have an iPAQ with WINCE erased and any Linux bootldr installed. If it still runs WINCE, then please go to ftp://ftp.handhelds.org/pub/linux/dists/compaq/ipaq/stable/install.html and follow carefully along until you get to instruction 17, which congratulates you after installing bootldr-0000-2.14.8 and tells you to go to the familiar instruction page. This page is a great guide for general behaviour while installing stuff, but you should come back here for specific instructions; skip to the "load kernel" step below.]
The iPAQ is powered, in a sleeve, with a network card installed that has contact with the external network. A Lucent-based 802.11b wireless card is best (Compaq WL-110, Lucent, Cabletron/Entrasys, etc.).
You have a console window open via serial connection. The host machine has network connectivity, and has already collected the following files from ftp://lorien.handhelds.org/pub/linux/feeds/demo:
bootldr-0000-2.14.8
zImage-2.4.7-rmk3-np1-devfs-hh2
task-bootstrap-2.4.7-rmk3-np1-devfs-hh2.jffs2
Here we go:
Reset the iPAQ with the bottom button. You'll see the splash screen and the boot> prompt on the console after you press the calendar button.
At the boot prompt, run "load bootldr" and send via xmodem the bootldr file listed above. Follow the familiar page's instructions for this, although the commands "show" and "partition show" should reveal that most if not all of the parameters have already been set properly.
Install the kernel image. Run "load kernel" and xmodem over the zImage-... file shown above.
Now flash the root filesystem and bootstrap image by running "load root" at the boot prompt and feeding it via xmodem the task-bootstrap... item listed above.
Go get coffee.
As with the bootldr installation, generally you should see what the familiar installation page describes for the steps 3 and 4 as well.
boot> boot
Everything should come right up, so login as usual as root, rootme.
Let's switch into the "shell-prompt# command-to-run" instruction format for awhile. This is just a run-through of everything used to make a sane, working environment.
# date
# ipkg update
# ipkg install bash
# bash
bash-2.03# ipkg install vim
bash-2.03# ipkg install handy-utils
bash-2.03# ipkg install mipv6-bits
bash-2.03# vi /etc/ipkg.conf, comment out crl-demo in the package src list
bash-2.03# ipkg install task-familiar-complete (ignore the xfree86-common dependency warnings)
bash-2.03# ipkg install ion
bash-2.03# ipkg install rxvt-aa
bash-2.03# ipkg install xstroke
bash-2.03# ipkg install menu-tiny
bash-2.03# ipkg install gtk-menu
bash-2.03# ipkg install xkbd
bash-2.03# /etc/init.d/x stop
bash-2.03# /etc/init.d/x start
bash-2.03# chmod 644 /etc/pcmcia/network.opts
bash-2.03# vi /etc/pcmcia/network.opts, turn off dhcp and pump, i.e. dhcp="n"
bash-2.03# vi /etc/modules, add in ipv6 and bitsy-uda1341
bash-2.03# ifconfig eth0 down
bash-2.03# modprobe ipv6
bash-2.03# modprobe bitsy-uda1341
If you have a wavelan card, assuming you have encryption off, bash-2.03# iwconfig eth0 essid < home network ap name >
Then bring up the card. If it sees a router, it'll auto-config a global IPv6 address. Afterwards you can set up an IPv4 address so you can talk to others or do nfs mounts. bash-2.03# ifconfig eth0 inet6 up
bash-2.03# ifconfig eth0 < v4 addr >/24 broadcast < bcast addr >
bash-2.03# route add -net default gw < IPv4 gw addr > eth0
bash-2.03# vi /etc/hosts < add ::1 localhost6, a global IPv6 identity, global homeagent IPv6 addr, global cn IPv6 addr >
bash-2.03# vi /etc/sysconfig/network-mip6.conf < set functionality, home address, home agent > don't forget /64 mask at end of these
bash-2.03# /etc/init.d/mobile_ip6 start
Now test:
First you can say:
bash-2.03# mipdiag -i,
and you should see:
Home Agent : 3ffe:1200:4140:12:208:c7ff:febf:3a9f/64 (HA's global addr)
Home Address : 3ffe:1200:4140:12:2e0:63ff:fe81:cc92/64 (MN's global addr)
Care-of Address : 3ffe:1200:4140:12:2e0:63ff:fe81:cc92 (same, 'til you move, then same ll addr with a different global net!)
Do this from an X terminal bash-2.03# wget -O - http://< correspondent node >/noise.mp3 | madplay -
do this at the console: bash-2.03# ./manual_roam.sh < foreign network ap essid >
and back again to the home network.