OpenTom is a tiny, open source Linux distribution for TomTom™ devices.
This repository was tested to be working on May 2024.
Forked and fixed up by micky-it, then LeddaZ.
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(Entered an auto root path. To have a different path edit get_cross_env.sh)ROOT
envvar inget_cross_env.sh
- Enter the root terminal (
sudo su
in Ubuntu) - Execute
source get_cross_env.sh
or./start-compiling.sh
- Run
make
to 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 calledopentom
on 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 extra
and copy the files as described above - For
dosbox dune2 gnuboy linapple
and scummvm games: take them from the Internet and copy them into opentom/share subdirectories. - For coolreader: Run
sudo updatedb
in case the default font is not found. - For Navit*, you need the TomTom gltt (see below, that read raw GPS data from
/dev/gps
and 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
root
from USB (it is recommended to connect the device to Linux for maximum compatibility) - Use the built-in FTP server to update your files
strace
andgdb
are ready to be used to debug your programs
- 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
$ROOT
and runmake ttsystem
- Just extract you source into
$ROOT/src
(for libraries) orapplications/src
(orbuild
if 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$ROOT
directory) 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/i386
directory - 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
fdisk
to create two partitions on your SD card: partion1=vfat(TomTom), partition2=ext2(10Mo?) - Copy
ttsystem
into 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_ext2
toSD.part2/etc/rc
- Verify that kernel include ext2 filesystem support
- Copy
configs/etc_rc_file.pivot_root_ext2
toinitramfs/etc/rc
make ttsystem
- Then on partition 1 copy
build/ttsystem
and theopentom_dist
directory on SD.part1 - If something goes wrong, try
configs/kernel_config.console_ext2
to activate kernel FrameBuffer console
- Copy your TomTom™
ttsystem
file into$ROOT/src
(e.g.cp /mnt/TOMTOM/ttsystem $ROOT/src/ttsystem.tomtom
) cd $ROOT/src
ttimgextract ttsystem.tomtom
mkdir -p ttsystem.tomtom.initramfs
cd ttsystem.tomtom.initramfs
gunzip -c ../ttsystem.tomtom.0 | sudo cpio -i
- Now the boot ramdisk of your TomTom is extracted to
$ROOT/src/ttsystem.tomtom.initramfs
and 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
spreadsheet
to 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
- Michele Martinelli (https://github.com/micky-it): project update and tested
If you want to thank me (micky-it) by donating bitcoins here is my wallet address!
1FbKuHZrtvhNnZ87N79AHfX6BzuLmS9mpN