lca

linuc.conf.au

That's gotta hurt...

I really have to feel sorry for the people who run Tan-Y-Bryn, self-contained accommodation in Hobart, Tasmania. I booked this place for the second half of January next year because it looked so well-priced for such a great place to stay while we're at LCA as well, as the week we'll just hang around Hobart afterwards.

Unfortunately for both of us, it seems they forgot to note somewhere on some booking site that they were full for that period, and they got a booking through some high-handed booking organisation who said they were liable for AUD$1000 if they refused it. So they cancelled on me, as the easier & cheaper option. A step that wasn't taken lightly, to read the agonised e-mail they wrote me in the small hours of the next morning.

Using NZ Open GPS Maps from Linux

A GPS is one of those toys that I have wanted for a very long time. So last year I finally marshalled enough excuses in one place, lined them up and plunked down some money for a Garmin GPSmap 60CSx in the vague belief that there's enough Linux software out there which understands GPS, and the Garmin is a brand that seems to have mature Linux support. And besides, I'd been told it was a good model that would do what I wanted and then some.

Once I got it I naturally wanted to do stuff with it, and in particular I wanted to connect it up to my laptop which (of course) is running Linux and I found that it wasn't nearly as trivial as I had thought.

This prompted me to run around finding software to use with it, so here's my capsule review of my journey from "extremely naive" to "very naive". Perhaps I'll also learn something from the comments of people who are further down the track.

My first resort was "apt-cache search gps", of course, which immediately brings up such fine sounding programs as "gpsman", described as "A GPS manager" (I haven't managed to get it to do anything yet), "gpstrans" which since it specifically mentions Garmin GPS sounded like just the ticket (it appears to be quite old and superseded). There was some useful stuff as well.

gpsd Connects to your GPS and relays that in a format that all of the other software understands. This seems to have a fairly active development community. A bug I discovered was fixed quite quickly in a new release.
gpsdrive This software seems quite functional, though most of what it is trying to do is done by my GPS already. It can talk directly to many GPSs but I used gpsd for the actual communication, which provides broader support and multiplexes the GPS data so it isn't locked by a single applications.
gpsbabel This very powerful comannd-line tool will inter-convert many GPS data formats.

Getting Maps on the GPS

Since the Garmin GPSMap series will display maps, I wanted to be able to get some mapping data on there. There are two map sources I was interested in:

  • Map data from NZ Open GPS Maps which gives comprehensive coverage of New Zealand, and is free and community maintained, albeit with some annoying uncertainties about the licensing of the data, and it's being tied to Garmin GPSs.
  • Map data from OpenStreetMap.org which gives excellent coverage of many areas of the world, and is free for use under a creative commons license.

Using the NZ Open GPS Maps

The NZ Open GPS Maps are built specifically for the Garmin GPS, so getting them onto my GPS was relatively simple once I found out the exact command line was remarkably hard.

The program that I needed to find to be able to get the maps onto my GPS was sendmap20 which is a free (as in beer) download from the cGPSMapper Website.

I downloaded the maps from the NZ Open GPS Maps hosted on the cGPSMapper site. I needed the files identified as 'binary' files - the installer is a Windows program and no use on Linux. They all have filenames like 64000012.img.

The command-line I first used to install the maps onto the GPS was:

sendmap20 -t/dev/ttyUSB0 640000??.img

That works fine, but if you have even a moderately sized micro SD card in the GPS there are much faster ways. As I found more free maps I found much better ways to do it.

An alternative approach

In the GPS (well, in my one anyway) there is a micro-SD card which is FAT formatted and all of the installed maps are in one humungous combined image of all of the uploaded maps. This means that there is no way to straightforwardly add/remove maps without creating that image, and re-uploading the whole thing. The image file is called 'gmapsupp.img' and is in the 'garmin' subdirectory on the SD card.

This means that you can create the file (or even several different files, with different maps on them) and move them directly on there much quicker, either by taking the SD card out and using it in a USB2 reader (for really big files) or switching the GPS to operate in USB Storage mode (which is USB1, but OK for smaller files).

You can create the IMG file to copy in as gmapsupp.img with sendmap20 also, with a command-line like:

sendmap20 -lNZOpenGPSMaps.img 640000??.img

and then, if you mount the GPS as /media/GPS, you can copy that file on directly

cp NZOpenGPSMaps.img /media/GPS/garmin/gmapsupp.img

QLandKarte

Another program I found useful specifically for dealing with the Garmin GPS Map format is QLandKarte, which understands the native Garmin format and will display the maps in a graphical window.

You can also point and click to select maps, building up a specific set that you can then upload to the device from within QLandKarte itself. This seems to operate a lot faster than sendmap20, presumably because it's driving the USB directly, rather than through usb_serial. To get it to work I seem to have to (a) sudo rmmod garmin_gps and (b) sudo QLandKarte, however, which is definitely not ideal.

For the moment I will continue to use sendmap20 to create files which are sets of the maps I want, and will put them on the device in USB storage mode.

QLandKarte is still very useful, however, for looking at maps and deciding if they are worth bothering with. I used it in this way to select the Australian maps I took with me when I went to Linux.Conf.AU recently. There are more free Garmin GPS maps.

OpenStreetMap.org

Those Australian maps came from OpenStreetMap.org and ultimately I expect that it will become the best source of data for creating maps for my GPS. OpenStreetMap.org is an attempt to provide community-maintained maps for the whole world and which seems to have made significant progress in UK, Europe, America and Australia as well as many other parts of the world.

The data from OpenStreetMap.org does not have the same licensing restrictions as are present even in the NZ Open GPS Maps data (which is relatively free, but has problems similar to the old-style BSD license).

There are also some good mapping interfaces to the OpenStreetMap data although the searching currently still leaves something to be desired. Interfaces are also available for extracting subsets of the data, which is in a fairly straightforward XML format, or you can download the whole lot, but at nearly 3GB for the bzip2 compressed version you won't do it every day.

I gave a brief overview talk about OpenStreetMap.org while I was at Linux.Conf.AU and it seemed to go down quite well (I gave it several times, in fact). You don't need a GPS to contribute to the project, and of course the maps which are being created are usable for many purposes beyond their usefulness on GPS. Some people apparently even print them out, but that just seems weird!

LCA 2008 so far

LCA officially started today, with a great opening keynote by Bruce Schneier very nicely pointing out the differences between feeling secure and being secure, and with a few good examples of where these are mismatched and action needs to be taken to fix the mismatch. Good stuff - catch it on video if you get the chance.

Of course for me LCA started on Monday when I got roped into presenting a lightning talk at the Community Wireless miniconf on OpenStreetMap.org which is something I've been fiddling with recently, and a project which definitely deserves more attention. Since nobody else turned up to give their lightning talks my 3 minute presentation was stretched severely out of shape, but the Community Wireless miniconf was generally pretty interesting and I stayed there all day in the end.

Yesterday was the SysAdmin miniconf, and as one of the organisers there was no chance for me to look around at what else was going on. It was a full-on day, and the feedback I have from everyone is that it was a good miniconf. Certainly it was good enough to attract more people than could fit in the 120 seat theatre we initially had allocated so that we had to move into a much larger theatre. A big thank-you to the organisers for so quickly recognising and reshuffling things so that was possible.

All signs so far definitely indicate another great linux.conf.au

Debian GNU/Linux on a HP Compaq nx6320

Opening the box, we find...

Inside the box was a computer, a power adapter and a battery. There was a bunch of other stuff, but none of that applied to me!

I booted from an Etch pre-release CD I had floating around, most things were detected and most things worked in a basic manner. I don't run Etch though, so I was upgrading to the truly bleeding edge fairly rapidly.

Normally I run Debian Unstable, so I upgraded to that immediately and that was all fine, but with Etch being released soon many developers are putting interesting stuff into Experimental, and I wanted X.org 7.2 and Gnome 2.16 which are in there...

Packages you will want to install

To get the 1400x1050 screen resolution you will need to install '915resolution'. This seems to still be the case with the packages of X.org 7.2. I have seen some interesting sounding options in the i810 man page that might be alternative ways, but the hack that 915resolution uses is a much simpler solution since it is already packaged.

To get the wireless working you will need to install 'ipw3945d' and 'ipw3945-modules-2.6.18-4-686' (or some other package of the modules - I installed the source package and used module-assistant to build the modules because I like to build my own kernel).

What is mostly working

A Tour on the PCI Bus

00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03) Supported
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03) Supported, with 915resolution
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03) Supported, with 915resolution
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01) Supported, using Alsa
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01) Supported
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 01) Supported
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 01) Supported
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 01) Supported
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 01) Supported
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 01) Supported
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 01) Supported
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01) Supported
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e1) Supported
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 01) Supported
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01) Supported
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI (rev 01) Supported. Your kernel needs to specify the SATA AHCI, as all recent distro kernels will.
02:06.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller Supported.
02:06.1 FireWire (IEEE 1394): Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller Not tested.
02:06.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) Update: 2007-02-23 Using the driver from http://developer.berlios.de/projects/tifmxx this is now working with a 2.6.20 kernel.
02:06.3 Generic system peripheral [0805]: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller Update: 2007-02-23 Using the driver from http://developer.berlios.de/projects/tifmxx this is now working with a 2.6.20 kernel.
02:06.4 Communication controller: Texas Instruments PCIxx12 GemCore based SmartCard controller What is this?
02:0e.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5788 Gigabit Ethernet (rev 03) Supported with "tg3" driver (standard kernel)
08:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02) Supported with ipw3945 driver (ipw3945.sf.net, but commonly packaged)

Display

Once I installed 915resolution the display just works under X.org 7.1 and X.org 7.2. After a suspend to disk I have to run 915resolution again otherwise X will be shown in 1024x768. I think I could then run xrandr to switch back to 1400x1050 at that point (to be confirmed).

Touchpad

The touchpad has a scrolling area at the right of it, which works as designed, and it also seems to handle a two-finger tap as equivalent to a two-button click (i.e. what would normally be a middle button click). It seems nice, and I will probably get used to it.

PCMCIA

I pulled out my 3G card and plugged it in and it just works.

There is also one of these new fandangled PCMCIA^WCardBus replacement whatsits, but I don't anticipate having anything that actually uses that any time soon.

USB

All USB ports seem to work as expected. I seem to get pretty high speed transfers out of my camera too.

SD * MS/Pro * MMC * SM * XD

This was something that I was hopeful would actually work, since I have a few devices that use SD cards now and it definitely seems to be the format that is taking over from Compact Flash, except for in irrelevant stuff like Sony and Olympus equipment.

Unfortunately, though I compiled all of the MMC kernel stuff into my kernel (as well as the core under "Device Drivers -> MMC in the kernel configuration there are chipset drivers under "Device Drivers -> Misc devices" - go figure ). Those drivers seem to be for a "TI PCI74xx compatible" reader, and mine seems to be a "PCIxx12" something, so perhaps there just isn't a driver Right Now and I just have to wait a few months.

Update: 2007-02-23
Using the driver from http://developer.berlios.de/projects/tifmxx this is now working with a 2.6.20 kernel.

What Ain't Tested

Bluetooth

I can see the bluetooth is there with 'lsusb', and I expect that it will all work just fine, but I don't have anything that does bluetooth, so I can't say for sure.

Modem

I don't have a poorband account anywhere, so I can't test it. It isn't something I expect to ever want to use, but it looks like an AC97 modem so I expect it will work just fine.

TV Out

Since I don't have a television.

Parallel Port

Didn't these things get replaced by network printers and USB printers a bunch of years ago?

Serial Port

Yep. It has one. Weird. I wish that they had put two USB ports there instead - it would have been a much better location for stuff like my wireless mouse to plug into.

Firewire

I must pull one of my firewire HDs out and see if this works...

What Ain't Working

Suspend / Resume

Suspend to ram sometimes works for me, but on most occasions resume has left me with a working system but no keyboard input. Some googling suggests there are ways around this, but I am not sure if it is fully reliable at this stage. I have tried with the 'irqpoll' option included on the kernel boot line, which is purported to help with other laptops, but this (a) doesn't help, and (b) lots of other stuff seems to work badly with it.

Somewhere I read a suggestion to use the 'noapic' boot option, but this won't boot. I have a vague memory that the APIC is actually required for SMP systems.

Suspend to disk works, except that X comes back without the BIOS manipulations that have been done by 915resolution, so it manages to end up in a 1024x768 screen rather than 1400x1050. This can probably be fixed by also running 'xrandr' to set the resolution back after '915resolution' has been run, or by 'chvt 1' prior to suspend, then '915resolution' on resume before 'chvt 7' to bring the X screen back. I will see... Update: 2007-02-23 Suspend to disk works reliably for me now that I "chvt 1" ... suspend to disk ... "/etc/init.d/915resolution start; chvt 7".

If the keyboard is not working after a resume from ram I can plug in a USB keyboard and that does work, but unloading and reloading the atkbd, psmouse and libps2 does not help (as I had hoped it would).

This is really important to me, so I'll keep working on it until I can either workaround the problems, or it gets to be supported by 2.6.21 or so... Hopefully sooner rather than later!

Fingerprint Reader

Well, I honestly wasn't expecting to have much luck with the fingerprint reader, and I haven't. A bit of googling did throw up Michael Crusoe's Bio API implementation which I have been unable to get to build so far, as well as the proprietary driver for the UPEK fingerprint reader, which refuses to install, probably because the Bio API isn't installed...

Looking at the output of 'lsusb' it seems that it may well not be a UPEK device, since I am told "Bus 001 Device 004: ID 08ff:2580 AuthenTec, Inc.". More investigation is clearly required.

That is all more than I expected to be there, to be honest, but unfortunately not enough to get me going. Oh well, I will have to take some heart from the fact that these devices are cute, rather than fully trustable.

If I do eventually get it working, I now know that I need to revisit this setting up the fingerprint reader page, which seems comprehensive.

Overall Impressions

Background

My main complaints with my old laptop (a very large Sony Vaio) were it's utter crap battery life (around 50 minutes when new, dropping to 35 or so now), it's poor performance relative to current dual-core CPU systems, and it's weight. I did love the screen on the Vaio, but it's docking station was becoming unreliable and various "Sony-isms" had never worked. My son was throwing some scissors around one morning and managed to spear a chunk out of the screen which also made it less appealing.

So while I was at LCA this year I took the opportunity to ask Keith Packard what laptop he would recommend. He clearly wants one of the new Panasonic Toughbooks, but they are not in my price range. He did also recommend some HP notebooks however and that is what I have gone for in the end though a slightly different model.

... and so?

I have to say that the "out of box experience" is very good. All of the important stuff "just worked" from what was on a four-month old Etch install CD. The hardware is pretty much Intel all down the line, which is the best way to go for a Linux laptop at present. The only proprietary code seems to be some firmware for the wireless, and that doesn't come with complexly encumbered distribution, so it is easily installed.

The only outstanding problems right now are keyboard failure on resume (the laptop actually works because I have managed to cut and paste commands from other bits and pieces on the screen using the mouse!).

While a few pieces of hardware are untested so far (I don't have any bluetooth devices, for example), the two that don't work are really irrelevant luxuries. The bottom line for me is that I now have 2 CPUs, 2G RAM, 100G HD, Wifi, LAN, a reasonably good screen working well with X, a decent battery life (and it also takes an additional battery, which I will get before I next leave the country).

It is a bit of a shame to not have a higher resolution screen, but it seems that Intel don't produce graphics cards beyond 1400x1050 and I'm seriously sick of the endless fiddling that has seemed to be necessary for me to use the ATI and NVidia drivers.

Overall a "B+".

Updated 2007-03-22

It seems that 915resolution is no longer needed with Xorg 7.3 (as I expected, to be honest). Using a small patch to the latest Xorg -video-intel drivers everything works and I am able to nicely expand my desktop across to another monitor when I resume at work, and contract it back when I am only using the laptop panel. Nice. Worth another blog post, so I'll write that in a minute.

Meanwhile, this bug will be fixed before Xorg 7.3 is released, I am sure, and things will work brilliantly after that!

What people want

Here at LCA it seems that some people want shared calendars, so I'm pleaased to be able to tell people that I have spent the last 9 months thinking about and writing a CalDAV server.

While it isn't finished yet (is software ever finished?), it does work just fine with all of the free CalDAV clients that are available, and a number of nice people have translated it into six languages so far.

So if you are at LCA and want to know more catch me at tonight's penguin dinner.

Gnome Branding

Hearing Andy Fitzsimon talk about Gnome branding is interesting in the context of Anthony Towns talk yesterday where he discussed the “Ice Weasel” episode andDebian's own logo licensing.

It seems that people want to give away there software, but still want to retain control - not many of us manage to completely let go, but those projects that have done so do not seem to have seen the problems that the paranoid among us suggest might happen.

It was good to hear Andy promoting the “just let it happen” point of view.

Some First Impressions from LCA

Puck has pinched the laptop I normally use for conferences so yesterday I had to lug my mammoth laptop around all day just so I could deliver my presentation from it. In the event the projector didn't work for me so I had to borrow Holger's instead. So I am now laboriously typing this all out on my Nokia 770...

Yesterday the conference started and I mainly followed the Debian stream, which is where my own short talk was. Keith Packard gave a fun overview of where X development is going and also showed some of the fancy stuff in action, including seamlessly expanding the desktop when he plugged in the projector. I'm certainly looking forward to that, and I hope I can get to meet Dave Airlie while I'm here and find out whether the open ATI drivers will be keeping up with that as well.

This morning Chris Blizzard gave a keynote talk about the one laptop per child project, and he's up now talking about Fedora, which I know far too little about, so it is quite interesting.

We had some fun yesterday afternoon when my son ran up and told me “Daddy there is a grownup over there using a kids computer!” prompting a flash crowd around the guys from Oregon State University who had an actual OLPC laptop and it was great to see it in action. That sunlight readable screen is awesome, and I really want to see one on my callphone, and my internet tablet, and (of course) my laptop. It would also be nice to see that mesh networking more readily available.

This morning I first heard about the Sidux distribution too, which I will definitely be looking into further.

No links on this post at the moment because it's kind of hard to do that stuff right without having a real keyboard and mouse attached. Feel free to add some in some comments, and I'll come back and add some more links later too.

Syndicate content