This is a simple BLOG of things that I had to do to my Ipaq, running Linux (Familiar v0.8.2) to make it work the way I wanted it to. Especially fiddly is the GCC stuff below that I needed to compile simple serial port software. If the search engines find it, and they might, then I hope it's useful to others. ------------------------------------------------------------------------------------- To stop whatever it is from clobbering the nameserver resolv.conf file do this: rm /etc/resolv.conf //this gets rid of the logical link to /var/run/resolv.conf vi /etc/resolv.conf and enter the line nameserver 192.168.0.1 (which is the P4 pc) NOTE: The sketch utility on Ipaq produces png files that Gimp can open on the PC and convert to bitmaps or jpegs or whatever. Use winscp on the pc once you have the wireless lan interface set up as a means of transferring files between ipaq and pc. Also, can use Teraterm to set up any number of consoles via ssh and tcpip as well as via com1 serial port. Need wlan working to do this. ipkg commands to install sftp so I can use winscp from the pc to the Ipaq: ipkg install openssh ipkg install openssh-sftp Download winscp3 from http://winscp.net/ to the PC and install it there. Then set it up with appropriate name/password and address to connect to ipaq via wlan. .... Nice....Deserves a Paypal donation... The wlan key to use for home_wlan is 1234567890. i.e. iwconfig wlan0 key 1234567890 (Not the actual key that I am using of course) Can set this up by editing /etc/network/interfaces and making the wlan entry look like this: iface wlan0 inet static address 192.168.0.5 netmask 255.255.255.0 network 192.168.0.0 gateway 192.168.0.1 wireless_mode managed wireless_essid home_wlan wireless_key restricted key 1234-5678-90 [1] key [1] The files in /disk/ipkg are being used by ipkg. (base list x11) so don't remove them. The config file /etc/ipkg.conf has the line: lists_dir ext /media/cf/ipkg which tells ipkg to use the disk for them. (You put it in there in on installation so that the ramdisk doesn't get filled up with ipkg junk because it goes to the 1G hard disk) GCC: To get gcc and libraries required for compiling simple code like 'hello world' ipkg install gcc ipkg install gcc-symlinks //Now gcc is there but when you try to compile something it whinges about an executable called 'as' being missing. ipkg install binutils //this fixes the 'as' problem, but now there is a crt1.o file missing. It's in one of the lib-dev packages. ipkg install libc6-dev //that fixed that problem but introduced another. In /usr/lib/libc.so (which is a script) you need to /* */ out the //line that says "**** BUG in libc/scripts/output-format.sed *** elf32-bigarm,elf32-littlearm " // Ironic that a BUG warning actually causes the bug...Now gcc hello.c works //to get the make utility: ipkg install make USB woes: Regardless of what anyone else on the web says, DO NOT USE THE Bahia USB driver for XP. IT cause my XP to hang in wierd ways and made me do a restore to a previous system save-point to fix it. The driver didn't appear to work anyway. Maybe http://handhelds.org/moin/moin.cgi/WindowsXpUsbNetworkHowTo has a method that works. Investigate later. GPS on the serial port: NOTE: I've seen advice that tells you to comment out the last line on /etc/inittab. NOT a good idea as it stops you from logging in via serial port on all run-levels, which would be a disaster if your Ipaq had a problem that stopped access via touchscreen or wlan. I think that only stopping it when in run level 5 is safer. This way when you reboot the Ipaq, you can access it via serial if needed and change to run-level 5 for the gps stuff. To get GPS working, first MAKE SURE YOUR GPS SERIAL DEVICE IS NOT CONNECTED BECCAUSE THE SERIAL PORT IS A CONSOLE BY DEFAULT AND YOUR GPS NMEA INPUT WILL DO ODD THINGS WHEN INTERPRETED AS ATTEMPTED LOGINS OR CONSOLE COMMANDS! You will need an alternative login connection. I use the wlan and a ssh terminal (Teraterm running on the windows side and sftp courtesy of openSSH on the ipaq.) ipkg install gpsd Then ln -s /dev/ttySA0 /dev/ttyS3 //gpsd expects the device to be ttyS3 so link that to the real ttySA0 Then /etc/init.d/gpsd restart //Whoo Hoo it says success! Or not.... the serial port still acts like a console. OK now the nervous bit. You have to kill the console on the serial port, and stop it from respawning. First, if haven't already, start a teminal to the Ipaq serial port from Teraterm. if logged in on serial port, do an exit. Should see a login message on the console. On ANOTHER login console (using ssh over wlan), edit /etc/inittab and modify the S:2345:respawn:/sbin/getty 115200 ttySA0line to S:234:respawn:/sbin/getty 115200 ttySA0 //i.e. don't respawn on level 5 init 5 //change to run level 5 // Might have to do ps -ef |grep getty //to find the number of the getty processand // kill -9 that_number //to stop it DON'T TRY THIS AT HOME UNLESS YOU FAMILIAR WITH KILL AND PS Notice now that the login on the serial port console doesn't respond to a return? init 2 //to see if serial console comes back. Yep init 5 //no console login now... OK, time to plug in the gps and see if it does anything. Oh, how will we tell? gpsd should be accessable via TCP port 2947 so use a telnet client (from the Ipaq of course) telnet localhost 2947 NOTE: MOst serial GPS cables will need a null-modem adapter to connect to the Ipaq. (You know, wires 2 to 3 and 3 to 2 and 5 to 5 and a gender-bender male-male configuration.) Make sure the GPS is using 4800 Baud and in NMEA mode. (I think gpsd does auto Baud detection anyway, but you will need NMEA mode and using a $GPGGA type-string at least?) Plug in GPS. Do we see anything? My inline RS232 tester says that GPS is sending once a second...I hit return in the telnet window and I get GPSD in response. Is that it? Where is my latitide and longitude etc? OK, I hit 'r' and return, and I get the NMEA strings in the telnet window. It's working! Hmmm, need more info on gpsd. 'l' returns some hints. 'p' looks like it gives the lat and lon once. I think 'r' is for 'raw as it shows the un-parsed NMEA. 'w' looks useful as it toggles a semi-parsed output that repeats. OK, it works. Now, what can I do with it? ipkg install gpsdrive //install a gps app. Lets see if it's any good. Otherwise we'll have to write our own. Hmm. Takes a long time to install. Uh oh! Can't start another ssh via wlan. Have to do init 2. Hope I get my serial console back...init 2... Yeah! Kill the ipkg install, and try again. Seems to work this time. Stuff happens... Now look in the 'other' folder on the Ipaq desktop and I see gpsdrive. init 5 //to get the serial port for gpsd Reconnect gps to serial port click on gpsdrive to run it. Whoo Hoo! It says I'm in Melbourne Australia (I am too) and shows me a map. Also, the menu allows me to download a map for the region. I do so, and gpsdrive dies. Sigh, start it again. OK, now it knows I am in the Lysterfield region. Right on! Bugger all detail tho. No, zooming in doesn't help. Needs a more detailed map. Try download again with smaller scale? Try 10000 scale... Also, turn on 'auto-best map' in the menu. Not sure the map downloading is working properly. 'Tsgot the scale screwed up at least. It's a lot further than 197 metres (and less than 197 miles) from Lysterfield to Rowville. Maybe if I run gpsdrive not as root, as suggested...Nope, not much better. At least I can find the maps in the Ipaq now. Open one and have a look. Hey, they are all the same scale even tho I downloaded at different scales. Something not right here. Delete all maps and download just the 100000 scale one. Now the scale looks reasonable. Have to work out how to calibrate a map and make my own. They're just gif files in /home/tcornall/.gpsdrive. Oh, BTW I've heard that there are serial port adapters for the Ipaq to get extra serial ports. That might be a safer way to go.