Skip to main content

MyLaps / ChampionChip

RunScore connects to ChampionChip, MyLaps ProChip, and MyLaps BibTag decoders through MYLAPS middleware over TCP/IP. All three devices share the same protocol — ProChip and BibTag are ChampionChip variants that hit the same code path.

RunScore works with MYLAPS Timing & Scoring over TCP/IP. Older MyLaps Toolkit and ChampionChip ReadLite setups still speak the same protocol.

  • MYLAPS Timing & Scoring (current) — TCP/IP to ChampionChip, MyLaps ProChip, or MyLaps BibTag.
  • MyLaps Toolkit / ChampionChip ReadLite (legacy) — same TCP path; ReadLite also supports serial and file.

Looking for MYLAPS's newer cloud-based service instead? See MYLAPS Cloud Timing.

Supported devices​

Device dropdown nameNotes
ChampionChipOriginal passive transponder system. 7-character alphanumeric chip code (e.g. DK5M6M9), looked up via the chip field in the database.
MyLaps ProChipSame protocol as ChampionChip — "acts just like ChampionChip."
MyLaps BibTagSame protocol. Chip ID is in GroupID format (IICCCCC — first two digits = group, last five = ID). When Bib ID is enabled (see BibTag mode below), the chip ID is treated as the bib number directly.

Prerequisites​

  • MYLAPS Timing & Scoring (or legacy Toolkit or ReadLite) installed and running on the decoder PC (or the same machine as RunScore).
  • The decoder hardware connected and visible to the middleware.
  • A TCP port number agreed upon between RunScore and the middleware (any port in the range 1024–65535).

Setup (TCP)​

Middleware side​

In Timing & Scoring (or legacy Toolkit), open the T&S TCP/IP exporter settings ("Plug-in Settings for TCP/IP export"). Set the hostname (localhost if the middleware and RunScore are on the same PC) and a TCP port. The port is yours to choose — it is not fixed. RunScore accepts 1024–65535; both sides must match.

Timing & Scoring TCP/IP exporter settings — hostname, port, and general settings

The Status tab should show Initializing → Connected once RunScore is listening:

Timing & Scoring TCP/IP exporter status — Connected / Server is connected

In legacy ReadLite, configure a TCP/IP connection to RunScore's IP and port.

RunScore side​

Open the Initialize External Timers dialog, then on an empty slot:

  1. Set Device to ChampionChip, MyLaps ProChip, or MyLaps BibTag (whichever matches your hardware).
  2. Check the TCP box. (The baud rate setting has no bearing on TCP/IP.)
  3. Enter a Port number (1024–65535). This must match the port the middleware is exporting on.
  4. Set Event to * so incoming Locations are resolved through the location map, or a specific event number to pin the slot to one event.
  5. Click OK.

Initialize External Timers dialog with a MyLaps device selected and TCP checked

RunScore begins listening on the specified port — it acts as the TCP server. The middleware connects in as the client. This is the reverse of how most TCP timers work. On the Timing & Scoring exporter tile, you should see something like RunScore at localhost:… once connected.

Location mapping​

Each middleware "Location" (the text before the first @ in a message) must be mapped to a RunScore event. Resolution order:

  1. Same name — if the Location name matches a RunScore event name, data routes automatically.
  2. events_mapping.ini — stored mappings in the race folder (editable via Tools › Chip options › Events mapping…).
  3. Prompt — if neither matches, RunScore pops up a dialog asking you to assign the Location. The chosen mapping is saved to events_mapping.ini.

Location-mapping dialog asking which RunScore event to assign to a middleware location

Clicking Cancel on the prompt ignores that Location for the rest of the session (until you reopen the race).

Event routing​

Beyond the Location mapping above, chip reads can be filtered per-event using fields in the Event Editor:

FieldMeaningExample
Ear (number)Single antenna/read-point number.1
MatReader/mat range.1 2
Round/PassLap or pass through the timing point.1
MyLaps GroupIDTwo-digit group prefix from the chip ID.01

Gun times and markers​

Gun-start times reach RunScore two ways:

  • Chip code ST00007 — a special chip ID that the decoder sends when it receives a gun-start signal. RunScore writes this time to guntime.ini as the gun time for the event.
  • Marker command — the middleware sends <Location>@Marker@... messages. RunScore writes these to guntime.ini and acknowledges with <Location>@AckMarker@<msg-number>@$\r.

BibTag vs. chip mode​

By default, RunScore uses the chip code and looks it up in the database via the chip field.

When Tools › Chip options › Bib ID is checked (and Chip ID is not), the chip ID is used as the bib number directly — no chip-to-bib lookup is needed. This is the typical mode for MyLaps BibTag deployments where the tag number matches the bib number.

Loading chip data from a file​

If you have a saved ReadLite data file (e.g. from ReadLite's Save on File Deletion feature), you can load it without a live TCP connection:

  1. Enable Tools › Chip options › Auto Load and To results.
  2. In Enter/Edit Results, press Ctrl+F9 to import the file.

Do not initialize a timer slot with TCP unchecked to import a file — that path is serial communication to the Ear hardware, not file import.

Connection status and troubleshooting​

Handshake and keepalive​

When the middleware first connects, it sends <Location>@Pong@$ as a handshake. RunScore replies with RunScore@AckPong@$.

For keepalive, RunScore sends RunScore@Ping@$ after 20 seconds of silence. The middleware should reply with @AckPing@$. If the ping goes unanswered for another 20-second timeout (~40 seconds total silence), RunScore marks the connection as lost.

tip

In Timing & Scoring (or legacy Toolkit), the Send ping checkbox in the T&S TCP/IP exporter settings controls whether the middleware sends its own pings. This is separate from RunScore's ping.

Status indicators​

RunScore shows status strings in the format MyLaps connection: <status>:

StatusMeaning
IdleSocket is up, but no data is arriving right now.
StreamingMiddleware is connected and actively sending data.
Connection LostPing went unanswered — no data for ~40 seconds.

Status bar showing Streaming status

Status bar showing Idle status

When the connection is lost, RunScore displays a "My Laps Timing & Scoring Connection Lost" popup:

Connection Lost popup dialog

Troubleshooting​

  • Middleware won't connect: Confirm the port number matches on both sides and that no firewall is blocking the port. RunScore must be started (listening) before the middleware tries to connect.
  • Chip reads arriving but not matching runners: Verify your chip-to-bib mapping, or enable Tools › Chip options › Bib ID if your tags match bib numbers directly.
  • Debug mode: Open Enter/Edit Results and press Alt+D to toggle debug logging for raw protocol messages.

Day adjustment​

ReadLite records that include a date field (YYMMDD) are automatically adjusted by comparing the passing date to the Race Date (0–6 day delta). This happens regardless of the Adjust Day checkbox in the Initialize External Timers dialog — that checkbox controls the generic PC-clock path used by other devices, not MyLaps TCP dates.