TopoFusion on Linux
I am a big fan of the GPS track analysis and manipulation software TopoFusion. I am also a big proponent of Linux. Unfortunately, there is not a version of TopoFusion out which will run natively on Linux. As much as I would love it if that was the case, I am also a realist, and understand that the demand is not that high (possibly n=1). Therefore, I have decided to try and get it to run using WINE.
I have had a decent degree of success, and am making an attempt to document it here so that if there is somebody else interested in running it, you may be able to follow along and reproduce my results. If you have any questions, comments, etc. please let me know via email: nathan (at) 3dmobility (dot) com.
Currently this is being tested on a Gentoo Linux system. It is a AMD Athlon64 3400+ with 2 GB of RAM. I am installing TopoFusion Pro, and am currently testing using version 3.20 (I have a full version, but I occasionally test the demo version, and it works exactly the same). The latest version of wine tested is 0.9.55 (released Feb 8, 2008) Earlier versions of WINE will have lesser degrees of functionality.
Installing WINE
The first item to tackle is installing WINE itself. You should refer to your particlar system’s instructions on this, but you need to make sure you have opengl support enabled.If you are on a gentoo system, this is as simple as enabling the “opengl” use flag.
The next step is to install DirectX 9.0c, which is required by TopoFusion. I followed the general instructions at this site to do that. If you need more detail, I would recommend visiting that site or the associated discussion forums which helped me out. I have reproduced that tutorial (without the screenshots) here, with some additional comments that helped me out when I was trying to get it working.
Installing DirectX9.0c
After you have installed wine, run winecfg.Once the .wine directory is built the configuration tool will start and you can set a virtual desktop in the graphics tab if you wish. This is a good time to also set your Audio driver in the Audio tab (although TopoFusion does not need sound, yet. . . ). Also, you need to make sure the ‘default’ setting for applications is Windows 2000 (the installer will not run if it is something else).
Note: as a side note on audio, you need to have a sound sequencer compiled into your kernel or you will get errors to the effect of open /dev/snd/seq failed: No such file or directory everytime you run something with wine. Again, not a big deal for TopoFusion, but it might be for other WINE programs.
WINE allows you to run different dlls as ‘native’ or ‘builtin’. This tells it whether to use a real windows dll or a homegrown WINE substitute. You will need to set a large number of dlls to native for the install to work properly. The easiest way to do this is to set the first one on the list below using the “libraries” tab in the winecfg utility.
Set “d3d8” to “builtin” and then save and exit winecfg. Next, open up your configuration file user.reg in a text editor of your choice. This file should have been created in ~/.wine after winecfg ran for the first time.
Do a search for the line containing [Software\Wine\DllOverrides] and copy the following list into the file under that heading:
“d3d8”=”builtin”
“d3d9”=”builtin”
“d3dim”=”native”
“d3drm”=”native”
“d3dx8”=”native”
“d3dxof”=”native”
“dciman32”=”native”
“ddrawex”=”native”
“devenum”=”native”
“dinput”=”builtin”
“dinput8”=”builtin”
“dmband”=”native”
“dmcompos”=”native”
“dmime”=”native”
“dmloader”=”native”
“dmscript”=”native”
“dmstyle”=”native”
“dmsynth”=”native”
“dmusic”=”native”
“dmusic32”=”native”
“dnsapi”=”native”
“dplay”=”native”
“dplayx”=”native”
“dpnaddr”=”native”
“dpnet”=”native”
“dpnhpast”=”native”
“dpnlobby”=”native”
“dsound”=”builtin”
“dswave”=”native”
“dxdiagn”=”native”
“mscoree”=”native”
“msdmo”=”native”
“qcap”=”native”
“quartz”=”native”
“streamci”=”native”
Download DirectX 9.0c November release from here.
Run wine directx_nov2007_redist.exe and extract the files into a directory of your choice.
Go to that directory and run wine DXSETUP.EXE. The installer should run through, and then inform you that you need to restart the system (don’t worry, it won’t actually do that).
You aren’t quite done with the installation yet, you actually need to run it a second time or you will get some major errors. However, before you do that, there are a couple more .dll files we need before the second go-around. You need to download a native (real Microsoft) mscoree.dll and streamci.dll and copy them into ~/.wine/drive_c/windows/system32. You can get these files from a native windows install on another computer, or try googling them.
After copying these files, run wine DXSETUP.EXE again.
After it has completed the second time, go to your system32 folder and run wine dxdiag.exe. This should bring up the directx diagnostic utility. The first thing you want to do is check the files tab and make sure you are not missing any more files. I was missing one. Google for any missing files, and copy them into ~/.wine/drive_c/windows/system32.
After that, you can try out all the directx dignostic tests, and they should all work relatively well.
Installing TopoFusion
Now that we have DirectX 9.0c installed and working, we can get down to business with TopoFusion. Before we install TopoFusion, there is one more file that it needs which is not installed yet. You need to download MSVMVM60.DLL either from the internet or from an existing windows installation and place it in the ~/.wine/drive_c/windows/system32 folder.After you have placed that file into the appropriate location, you can download the latest version of TopoFusion Pro from the Topofusion website (currently 3.20).
After you have downloaded the installer, run wine TopoFusion-Demo-Pro-3.20.exe to install TopoFusion.
If you have done the above steps, the installer should finish without any issues, and TopoFusion should be ready to run.
Running TopoFusion
This is the easy part.cd ~/.wine/drive_c/Program Files/TopoFusion/
wine TopoFusion.exe
Voila!
Known Issues and Functionality
The major issue that you will notice right away is that the background images don’t work all that well. This includes satellite images and topo overlays. They appear intermittently as you use different tools and different views. We are working on some possible workarounds to fix this, stay tuned.If you resize the main window or the pane at the bottom of the main window, you will screw up the display. Sometimes you can play around and get it back on track, but it currently does not scale correctly. I usually just don’t resize the window, it’s easier.
GPS communication does not currently work, you have to use something like GPSbabel for communication on Linux (which works very well, it just takes a little effort since it is a command line program)
Most other major functionality which deals with opening, manipulating, and analyzing tracks does work just fine. The logbook works, and the playback even works (you just don’t see it on the correct background)
The image export of the elevation profile does not currently work, but you can scale it up as large as you want and then take a screen capture if you want to save that image.
As I work through the above issues (most notably the background images, but hopefully the GPS communication as well) I will post updates to the procedure here as well. If anyone has any more suggestions or ideas about making this work a little better, please email me at nathan (at) 3dmobility (dot) com.
