# Getting and Building the Software

## Building software

There are three parts that can be built. It is the firmware for the SIMtrace hardware, the SIMtrace software and the modified version of wireshark. All of these have different source trees and dependencies.

## Building SIMtrace

### Building the Osmocom libosmocore library

    $ git clone git://git.osmocom.org/libosmocore
    $ cd libosmocore
    $ autoreconf --install --force
    $ ./configure
    $ sudo make install

### Installing libusb

You will need to install the libusb header files to be able to compile `simtrace`.

### Building `simtrace`

    $ wget https://api.opensuse.org/public/source/home:zecke23/simtrace/simtrace_0.0.1.tar.gz
    $ tar xzf simtrace_0.0.1.tar.gz
    $ cd simtrace-0.0.1
    $ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig make
    cc  `pkg-config --cflags libosmocore` -o main.o -c main.c
    cc  `pkg-config --cflags libosmocore` -o usb_helper.o -c usb_helper.c
    cc  `pkg-config --cflags libosmocore` -o usb.o -c usb.c
    cc  `pkg-config --cflags libosmocore` -o apdu_split.o -c apdu_split.c
    cc -o simtrace main.o usb_helper.o usb.o apdu_split.o -lusb `pkg-config --libs libosmocore` -losmocore

## Building Wireshark

SIMtrace provides a patch against `wireshark` version 1.6. It is the easiest to checkout a copy using the 1.6 branch of wireshark and applying the `simcard.patch` on top of it. And then use the usual way of building wireshark

### Getting Wireshark

    $ svn co https://anonsvn.wireshark.org/wireshark/trunk-1.6 wireshark-1.6
    ...
    A    wireshark-1.6/isprint.h
     U   wireshark-1.6
    Checked out revision 38543.

### SIMCard patch

You will need to download and apply the patch.

    $ cd wireshark-1.6
    $ wget http://cgit.osmocom.org/cgit/simtrace/tree/wireshark/simcard-for-wireshark-1.6.patch
    $ cat ../simcard-for-wireshark-1.6.patch | patch -p 0
    patching file epan/dissectors/packet-gsm_sim.c
    patching file epan/dissectors/packet-gsmtap.c
    patching file epan/dissectors/Makefile.common

### Building and Installing

    $ autoreconf --install
    $ ./configure
    $ make
    ...
    $ sudo ./wireshark