OpenTom is a tiny, open source Linux distribution for TomTom™ devices.
This repository was tested to be working on June 2020.
Before proceeding, it is recommended to backup the original contents of your GPS's internal storage.
- Register the i386 architecture by executing
sudo dpkg --add-architecture i386(or the equivalent for your system) - Install the following dependencies:
autoconf chrpath fluid imagemagick libglib2.0-dev libtool subversion xsltproc gawk dh-autoreconf pkg-config libglib2.0-dev libc6:i386 libncurses5:i386 libstdc++6:i386 cmake - Set the
ROOTenvvar inget_cross_env.sh - Enter the root terminal (
sudo suin Ubuntu) - Execute
source get_cross_env.sh - Run
maketo start the initial OpenTom build*- This may take a while, as it will download and compile every system component
- Copy
build/ttsystem(boot image) to the root folder of the GPS storage - Copy the contents of
opentom_dist/to a (new) folder calledopentomon the storage
*If an error like the following one appears during the compilation process...
Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized
make: *** [Makefile:288: arm-sysroot/usr/include/jpeglib.h] Error 2
...you can continue compiling by executing linux32 make
- Run
make extraand copy the files as described above - For
dosbox dune2 gnuboy linappleand scummvm games: take them from the Internet and copy them into opentom/share subdirectories. - For coolreader: Run
sudo updatedbin case the default font is not found. - For Navit*, you need the TomTom gltt (see below, that read raw GPS data from
/dev/gpsand send it to/var/run/gpspipe).
Note: currently, sprsht freecell navit are disabled as they are not compiling correctly.
- The IP that the GPS uses is usually
192.168.1.10(if it does not work, try192.168.1.200) - When you boot your TomTom with OpenTom, you can directly use Telnet to login in as
rootfrom USB (it is recommended to connect the device to Linux for maximum compatibility) - Use the built-in FTP server to update your files
straceandgdbare ready to be used to debug your programs
The following sections of this documentation have not been tested by me (@raulbalanza), so they are not guaranteed to be working as of June 2020.
- For kernel:
cd kernel; make menuconfig - For busybox:
cd build/busybox*; make menuconfig - For initramfs: do your changes and
touch initramfs/etc/rc - Then: return to
$ROOTand runmake ttsystem
- Just extract you source into
$ROOT/src(for libraries) orapplications/src(orbuildif no patches should be applied) - Run
./configure --prefix=$ARM_APPROOT --host=$T_ARCH(adapt accordingly in case the project is not based on Autoconf) - Copy the final executable into
$(TOMDIST)/bin - Run
make verif_dist(inside$ROOTdirectory) to update used shared libs inopentom_dist - Copy the files to your TomTom device
- If it works as you wish, make a patch (with
make patch-<my_app_dir_name>) and updateapplications/Makefile
- Create
$ROOT/i386directory - Extract, configure and install: microwin, nxlib (with libNX11), SDL, Fltk, ... (with
LDFLAGS=-L/usr/local/lib --prefix=/usr/local) - Try NetBeans to perform you developments?
Use an ext2 partion on your SDcard to replace (and free) initramfs with busybox pivot_root/chroot:
- Use
fdiskto create two partitions on your SD card: partion1=vfat(TomTom), partition2=ext2(10Mo?) - Copy
ttsysteminto SD.part1 and verify it boots, if not try to copy gns and program directory from original TomTom and others... - When it boots:
- Verify that busybox include chroot and pivot_root,
- Copy the unmodified
initramfs/*into linux SD partition, with/var/*linked to/tmp - Copy the
configs/etc_rc_ext2toSD.part2/etc/rc - Verify that kernel include ext2 filesystem support
- Copy
configs/etc_rc_file.pivot_root_ext2toinitramfs/etc/rc make ttsystem- Then on partition 1 copy
build/ttsystemand theopentom_distdirectory on SD.part1 - If something goes wrong, try
configs/kernel_config.console_ext2to activate kernel FrameBuffer console
- Copy your TomTom™
ttsystemfile into$ROOT/src(e.g.cp /mnt/TOMTOM/ttsystem $ROOT/src/ttsystem.tomtom) cd $ROOT/srcttimgextract ttsystem.tomtommkdir -p ttsystem.tomtom.initramfscd ttsystem.tomtom.initramfsgunzip -c ../ttsystem.tomtom.0 | sudo cpio -i- Now the boot ramdisk of your TomTom is extracted to
$ROOT/src/ttsystem.tomtom.initramfsand the TomTom kernel is in$ROOT/src/ttsystem.1 - Then:
cp $ROOT/src/ttsystem.tomtom.initramfs/bin/gltt $TOMDIST/bin
- Fix espeak => portaudio => OSS, that currently don't work
- Patch
spreadsheetto be adapted to TomTom screen
- Checkout the creators' documentation in
docs/ - Take a look at the shell scripts, Makefiles and patches
- Check the original repository for the latest patches
- Send an email in case of a problem to any of the collaborators (mainly to the original creator).
- Clément Gerardin (opentom@free.fr): project creator and supporter
- Raúl Balanzá (contact@raulbalanza.me): project sources update and verification