Mobile Announcer Display (MAD)

Mobile Announcer Display is primarily designed to provide a way for a race announcer to get real time data on participants approaching the finish line in order to provide them with a personalized experience while allowing the announcer to move around freely only carrying microphone and a compatible Android based device with him.



    • Technical Overview

      MAD relies on ToolKit from Mylaps. It connects to a TCP/IP Exporter which in turn provides MAD with the bibtag number and the time of day of runners passing a location of your choosing. MAD will look up runners information from the supplied participant database and race setup information and display as set of data on the screen for that given runner.

    • Networking Setup

      There are really two ways networking can be setup. Following diagram illustrates the basics.


      Networking setup appears quite complex but it’s actually quite easy – however you connect your BibTags to ToolKit today you will need a WiFi option to that setup. If you hard-wire the BibTags to the toolkit PC over a router – then buy a router with a WiFi network (Wireless Access Point) – they can be purchased quite cheaply at any electronics store. If the ToolKit PC is connected to the internet and get’s the BibTag data from the MyLaps Servers (BibTag connected over GPRS) then you may consider using an intelligent Mobile WiFi Hotspot. Alternatively a Smart Phone with tethering can be used as well, albeit the moving range of the announcer will be more limited.

      More advanced networking setups can greatly increase the range the announcer can move around in (e.g. up to 150m away from the access point has been achieved) if you use a wireless repeater.

    • Participant Database

      The participant database file is a .csv file with the following rules:

      • Filename must be <any text – preferably the name of the race>.csv
      • The data fields are delimited by “,” (comma).
      • The location of the file must be in <main storage directory>/MAD/* if you start MAD for the first time the “MAD” directory will be created for you. You should be easily able to find it (it should be located in the same directory as e.g. DCIM or Downloads). Please refer to Bugs & Limitation List to find out why you may have to restart your pad after MAD installation.
      • If multiple .csv files are present in that directory MAD will read the file that has been modified last (newest file).
      • Here is an example of a .csv file – e.g. 2011_MadDash_FortCollins_5k_10k.csv (white space delimited for readability):
        2780 BRIANA     STEGER    22  F   10K   Fort Collins
        2702 MELISSA    WOODY     37  F   5k    Greeley
        2607 DOUG       WOODY     34  M   10K   Longmont
        2669 COLIN      LEED      28  M   10K   Boulder 2985 STACY      SHOURT    48  F   5K    New York City
        The header row and the first 6 columns and the order shown above are mandatory for MAD to work correctly. More columns may be added and will be displayed if a runner is selected in the Announcer Display screen.

        Following you will find the data type definition:

        • Header Row can be any text describing the meaning of each column – this text will be used to describe the score data if a runner is selected in the Announcer Display screen.
        • 1st Column: Bib Number ->is the number assigned to the runner and read by the BibTag, leading ‘0’ (zero) will be removed if present.
        • 2nd Column: First Name ->is the first name of the runner.
        • 3rd Column: Last Name ->is the last name of the runner and will be concatenated with the first name for the display. First and last name can be reversed if preferred.
        • 4th Column: Age -> is the age of the runner on race day. Only numbers will be accepted for that column.
        • 5th Column: Sex -> is the sex of the runner. Only [M,F] are possible.
        • 6th Column: Event -> is the race distance this runner has enlisted to run. The composition of this field is a number representing the distance + [K,k,M,m] to indicate kilometers or miles, no space between the number and the [K,k,M,m]. If only a number is found, the assumption will be kilometers.


      • Using RunScore ?

        Generate the participant DB that goes into the pad’s “MAD” folder directly from runscore using the following macro:
        (of course you will have to adapt to your folders, field names and ENTRIES.INI variables)

        Comment             Generate the MAD participant file and place it in DropBox..
        Comment             ..under %HOMEPATH%\Dropbox\<sub directories>\%RACE NAME%.csv
        Select              no.
        >=                  1
        select              no.
        <                   9999
        field               no.
        field header        NO.
        case                proper
        field               FIRST NAME
        field header        First Name
        case                proper
        field               LAST NAME
        field header        Last Name
        case                proper
        field               AGE
        field header        Age
        case                proper
        field               SEX
        field header        Sex
        case                proper
        field               EVENT
        field header        Event
        case                proper
        field               CITY
        field header        CS
        case                proper
        destination         C:\Users\timing_PC\Dropbox\shared\MAD\%RACE NAME%.csv
    • Starting/Configuring MAD

      Start MAD by selecting the application icon:


      The first screen that will come up is the configuration screen:

      Under connection information you will find the IP address and the port to be used to configure MyLaps ToolKit TCP/IP exporter – if no IP address is present that means that the pad has not connected to Wifi or GPRS network correctly. The participant DB that has been loaded from the folder “MAD” along with the number of entries (#:) and the number of duplicate Bib numbers (d:) is shown on the line “Race:”.

      Two races can be set in this version that are being run at the same time with one and the same participant database. Check the first or both races and set distance and start time for correct finish time and average pace computation.

      The “Start Now..” button will fill in the current system (pad) time – if the pad is synchronized with GPS time it should be close enough to the start time used on the MyLaps BibTags (Smart Time Sync is the android application of choice to get GPS time and can be found on the android market place) .

      Metric or Statute representation of average pace can be set under “options”.

      All settings on this screen will be saved and automatically loaded at the next launch of MAD.

    • The Announcer Display

      Once you’ve started the announcer screen you will see a notification informing you about:

      • What is the name of the file that was loaded. (should be same as on main screen)
      • How many runners have been imported.
      • How many duplicate Bib Numbers were found and a list of the duplicate Bib Numbers.

      The brown bar will inform you about the status of the connection to MyLaps ToolKit TCP/IP exporter. If it has successfully connected it will indicate the name of the BibTag and Location MAD is getting it’s data from.

      Runners not found in the loaded DB will be displayed as “N/A” with the time they crossed the mat and the average pace only if one race has been selected.

      Selecting a specific entry (runner) on the display will temporarily display all the columns that have been loaded from the .csv file.

      All the passings over the mat (runners) will be displayed, newest entry will be at the top, older entries will be pushed down. Reviewing older entries can be achieved by scrolling up the display.

      The keyboard can be used to search/filter for specific criteria – e.g. name, age, city – a subset of entries matching the search criteria will be displayed as long as there is text entered on the keyboard filed.

    • Runner Lookup

      The Runner Lookup button will provide you with the ability to simply look up runner information based on one or several Bib Numbers you enter into the text field. This is handy for an announcer at the finish line to look up information during a race if the lead bicyclist (or spotters) will call in periodically with the Bib Numbers of the first few runners along the course.

    • Finish Line

      The finish line display is experimental and was designed to be used to display runners finishing onto a large LCD screen – e.g. with google chromecast or any other HDMI connected android devices.

    • GunShot

      The GunShot display was an idea to capture the exact start time(s) of a race (waves, XC, ..) and have it archived along with the backup timing of that race. The critical part for this to work is to synchronize the clock of the Android device with the time of the timing equipment e.g. BibTags. Assuming the BibTags are synchronized with GPS time then Smart Time Sync would be the android application of choice to get GPS time on the android device. For that to work the Android device needs to be “rooted”.


      • To record a GunShot just push the large “GunShot – Fire!” button. The exact TimeOfDay (of the Android device) and Date will be recorded.
      • Optionally a label for that gunshot will be added if there was any text entered in the text box above the gunshot button.
      • A permanent history of the last 8 gunshots is stored. The history can be cleared.
      • The push of the gunshot button will also set the start time for Race1 and reset the RunningClock (red, top right)
      • When you exit the GunShot display using the “back” button all the GunShots will be save in this race’s backup timing file (see Record Finishers)
    • Record Finishers

      Do you have aging TimeMachine’s ? Looking for a replacement that does not involve rolls of paper and/or expensive parts for repair ? Backup Timing is designed to match the functionality of the TimeMachine. The android device paired with a bluetooth keypad not only achieves that (no independent “clicker” though) but also adds participant information if found.

      Following keypads seem to work well:

      Since the bluetooth keypads have limited keys we mapped some keys to have special functions.

      • Both “enter” and “+” keys will add an entry (preventing fat fingers – LOL)
      • The “.” acts as a space to enter multiple runners finishing at the same time
      • Just “enter” without typing a bib# is adding a time entry labled as “pass”
      • The “-” sign clears the entry field (e.g. misstyped number)
      • “****” orders the pad to save all current entries into a csv file (same is done if you exit the app or you click the “save” button on the pad inside the backup timing app)

      The data on the screen can be saved repeatedly, the csv file will be appended monotonically increasing by time. The resulting .csv file will be named after your participant filename +”_BT.csv” in a sub-folder of the MAD folder called “BackupTiming”

    • Running Clock

      In the Title Bar on the right side you will find a Running Clock (red font) that is showing the time passed since the Start Time set for Race1 (main screen). The Running Clock will be shown on all the race function screens except for Runner Lookup.

    • Options Menu

      The Android options menu inside MAD contains two buttons:

      HELP -> Will display this page, provided the tab is able to get to the internet..
      ABOUT -> Will display version information.

    • Other Use Cases for MAD

      Here are a few potential other uses of MAD:

      • Android devices can be connected to an LCD screen (HDMI), thus you could have a large screen for runners and spectators to see in real time who is finishing the race.
    • Compatibility

      Generally compatible for Android devices (phones/tablets) with version <5 (Jelly Bean (4.1–4.3.1), KitKat (4.4–4.4.4, 4.4W–4.4W.2))

      Following is the list of compatible devices this application has been running on:

      • Samsung Galaxy Tab P1000, or any provider locked version of the tab.
      • Samsung Galaxy Tab 10.1 and 7
      • Samsung Phones: Infuse, Galaxy SII, SIII, S4.
      • Google Nexus 10 tab, Nexus 5 & 6 phones
      • HP 8 G2 Tablet.
    • Known not to work devices

      Following Devices have known problems:

      • Samsung Phone: Galaxy S4 -> display problems in the announcer screen (fixed, 4/15)
      • Android Mini PC RK3066 -> display problems on 60″ VIZIO LCD TV (working on it)
    • Bugs & Limitation List

      Following is a list of known bugs or limitations

      • The lag time of a runner passing over the announcer mats until the entry for that runner shows up on the pad is largely dependent on the networking setup.
        • BibTags and ToolKit connected over Ethernet: almost immediate to 1s
        • BibTags connected to MyLaps servers: generally we see about 2s lag time (factor this in when placing the announcer mats).
      • On newer devices there is an MTP bug that causes you to not see the MAD directory after the first start of MAD – please reboot your device and you should see the MAD directory.
      • The toggle button “Keep Saved Display Data” functionality has been disabled due to a bug in the google API – currently working on a different solution to persist the announcer data across MAD restarts.
      • Some PADs can have GPRS connectivity (SIM card) which would allow for ToolKit to connect to the pad over large distances (anywhere inside a GPRS coverage area really) – Mobile network providers however generally do not allow “incoming” connections (e.g. port 3097 on the pad) unless you purchase a SIM card with a static IP address. Please check with your service provider for options. MAD does support GPRS connectivity, however it has not been tested.
      • If the pad is connected to an LTE mobile network is seems to be getting an IPV6 IP address. This has not been implemented/tested.
      • Only one location in ToolKit is allowed to send data to MAD.
Page last updated on:
October 2, 2015