CHRONO
Ballistic chronograph app
CHRONO works with a ballistic chronograph over Bluetooth Low Energy (BLE) or USB. It receives velocity measurements, calculates kinetic energy and shot-series statistics, displays the data as a chart and a table, saves a series to TXT, and creates a PDF measurement report.
Purpose and quick start
The app is intended for use at the shooting range and for reviewing measurement series. USB communication uses a fixed rate of 19200 bit/s. BLE, USB AUTO, TEST, MIX, MAC LOCK, KEEP ON SCREEN, NOTIFICATION, STYLE and UNITS can be configured in CONFIG.
Quick start
- Switch on the chronograph and choose USB or BLE.
- The center field starts empty and shows CHRONO as a gray placeholder. You may enter a BLE device name or a MAC address when required.
- In CONFIG, set the projectile weight and, if needed, the ALARM VdV range.
- STATISTICS, CHART and MEASUREMENTS can be expanded independently.
- Before using CLEAR, save the series with SAVE or create a PDF report.
| Control | Function |
|---|---|
| USB | Connects or disconnects the wired data source. Fixed data rate: 19200 bit/s. |
| BLE | Connects or disconnects the chronograph over Bluetooth Low Energy. |
| SAVE | Saves the current measurement series to a TXT file. |
| LOAD | Loads a measurement series or a configuration file. |
| CLEAR | Deletes all measurements in the current series without an additional confirmation prompt. |
| MAX | Enlarges the main readout. The MAX state is remembered. |
| EDIT | Enables editing of the MEASUREMENTS table when the series contains measurements. |
| Creates a PDF report containing statistics, the velocity chart and the measurement table. |
1. Main screen
Header. USB and its status LED are on the left, the BLE field is in the center, and the BLE status LED and BLE button are on the right. The center field accepts up to 17 characters, which is enough for a colon-separated MAC address.
File panel. SAVE saves the current series, LOAD imports data, and CLEAR removes the current measurements.
Main readout. The large number shows the latest measured velocity or the shot selected on the chart. The shot number and kinetic energy are shown below it.
Expandable sections. STATISTICS, CHART, MEASUREMENTS and CONFIG are opened with the + control; after expansion, it changes to −.
Bottom bar. MAX, EDIT and PDF share one framed control panel. App messages are displayed below these buttons in a neutral text color.
| Field | Function |
|---|---|
| Main value | Velocity in m/s or ft/s, depending on the selected unit system. |
| Shot | Measurement number in the current series. |
| Energy | Kinetic energy calculated from projectile mass and measured velocity. |
| BLE / PDF name | BLE device name or MAC address. The same visible text is used as the report heading; an empty field falls back to CHRONO. |
| Messages | Operation confirmations and error information. Text messages are not highlighted in red. |
2. Connecting the chronograph
CHRONO supports USB and BLE input. Both connection controls are in the top bar, and the LED next to each control indicates its connection state.
2.1. USB
Press USB to select a compatible USB device and start a connection attempt. After a connection is established, incoming measurements are appended to the current series. Press USB again to disconnect.
- Data rate is fixed at 19200 bit/s.
- The USB LED is gray when disconnected and green when connected.
- USB AUTO is available in CONFIG. When ON, CHRONO attempts to reconnect automatically to a previously authorized USB device. This setting is saved to the TXT configuration file as USB_AUTO=1 (ON) or USB_AUTO=0 (OFF). The USB data rate is fixed and cannot be changed in CONFIG.
- Unplugging the cable ends the connection. When NOTIFICATION is ON, the status line below the bottom controls can display a disconnection message.
2.2. Bluetooth Low Energy (BLE)
The center field identifies the BLE device and accepts up to 17 characters. You may enter:
- the advertised BLE name, for example CHRONO;
- a MAC address, for example A4:C1:38:00:11:22 or A4C138001122;
- nothing — the app then follows the saved-device rules described in Appendix A.
| BLE LED | State |
|---|---|
| Gray | BLE disconnected. |
| Blue, pulsing | Connecting or attempting automatic reconnection. |
| Green | Connected and receiving data. |
| Red | BLE connection error. Details are shown as a normal status message below the bottom bar. |
When BLE AUTO is enabled in CONFIG, the app can connect automatically at startup and retry after a lost connection. Manually disconnecting with the BLE button stops automatic retries until BLE is started again.
3. STATISTICS — shot-series statistics
STATISTICS covers all measurements in the current series. Velocity values use the currently selected units. The expanded/collapsed state of this section is remembered. Measurements outside the ALARM VdV band remain part of the statistics even when their values are highlighted as alarms.
| Label | Meaning |
|---|---|
| VMAX / VMIN | Highest and lowest velocity in the series. |
| VAVG | Arithmetic mean velocity. |
| dV | Extreme spread: VMAX − VMIN. |
| SV | Sample standard deviation of velocity, calculated with n − 1. |
| EAVG | Average kinetic energy. |
| PAVG | Power Factor calculated from average velocity; the integer part is displayed. |
| NR | Number of measurements in the current series. |
Energy: E = m · V² / 2, where mass m is in kilograms and velocity V is in m/s. Power Factor: PF = mass [gr] · velocity [ft/s] / 1000.
4. CHART — shot-series graph
V / E. Switches the graph between velocity and energy.
− / +. Decreases or increases the number of measurements shown on the NR axis.
← / →. Moves the visible measurement window left or right.
R. Restores the automatic chart range.
Marker. Tap or drag across the chart to select a measurement. The main readout then shows the selected shot.
SC. Unchecked = COMPRESS: the whole series is fitted to the chart width. Checked = scrolling window of the most recent measurements. SC is not saved and starts in COMPRESS after launch.
The current version does not provide a separate MAX mode for the chart. The only MAX button is in the bottom panel and applies to the main readout.
5. MEASUREMENTS — table and EDIT
Table. Each row represents one measurement. NR, V, E and PF show the measurement number, velocity, energy and Power Factor.
Alarm. If a measurement falls outside the ALARM VdV range, its velocity may be highlighted with the alarm color.
EDIT. The EDIT button is in the bottom panel. When the table contains measurements, EDIT automatically expands MEASUREMENTS and enables velocity editing and deletion of individual rows.
Empty table. When the series contains no measurements, pressing EDIT does not expand MEASUREMENTS; the app reports that there are no measurements to edit.
After editing. The app recalculates the main readout, statistics, table and chart. EDIT state is not remembered.
5.1. Saving, loading and clearing a series
| Control | Action |
|---|---|
| SAVE | Saves the current series to a TXT file. Default filename format: CH_YYYYMMDD_HHMMSS.txt. |
| LOAD | Loads a TXT file. Measurement data are appended to the current series. A file beginning with CHRONO_CONFIG:1 is treated as a configuration file. |
| CLEAR | Deletes all measurements in the current series without an additional confirmation. Save the results first with SAVE or PDF if they need to be retained. |
6. PDF — measurement report
The PDF button in the bottom panel creates a report from the measurement section. If the series is empty, no report is generated and the app displays a normal “no measurements” message.
| Report item | Contents |
|---|---|
| Heading | Name from the center field in the top bar, up to 17 characters. An empty field uses CHRONO. |
| Series data | Name / Description, number of shots, unit system and projectile weight. |
| Statistics | VMAX, VMIN, VAVG, dV (ES), SV (SD), EAVG, PAVG and NR. |
| Velocity by shot | Velocity graph for successive shots, including VAVG and VAVG ± SV reference lines. |
| Measurements | NR, V, E, PF and V − VAVG for each measurement. |
6.1. Reading the PDF chart
| Line | Meaning |
|---|---|
| Measurement line | Connects the actual velocities of consecutive shots. |
| Orange dashed line | VAVG — average velocity of the complete series. |
| Upper gray dotted line | VAVG + SV. |
| Lower gray dotted line | VAVG − SV. |
6.2. V − VAVG column
V − VAVG is the velocity difference between an individual shot and the average velocity of the complete series: Vᵢ − VAVG. A positive value means the shot was faster than average; a negative value means it was slower; a value close to zero indicates a result close to the series average.
The PDF filename does not include the report heading. Default format: RP_YYYYMMDD_HHMMSS.pdf. The Name / Description field in CONFIG is a separate description placed inside the report.
7. CONFIG — settings
CONFIG stores settings used for calculations and data presentation. Changes are saved by the app as they are made.
LOCK CONFIG. Locks the settings and prevents configuration files from being loaded with LOAD.
SAVE CONFIG. Creates a portable text configuration file.
Current layout. The CONFIG panel contains NAME / DESCRIPTION, WEIGHT and ALARM VdV, followed by UNITS, MIX, BLE AUTO, USB AUTO, MAC LOCK, TEST, KEEP ON SCREEN, DATA LATCH, NOTIFICATION and STYLE. FIT SCREEN is no longer available in the interface.
KEEP ON SCREEN affects only the screen timeout while CHRONO is in the foreground. NOTIFICATION controls the visibility of the on-screen status line; it does not turn BLE/USB communication on or off. DATA LATCH is separate from KEEP ON SCREEN: it preserves the saved shot series, not the display timeout.
| Option | Function |
|---|---|
| LOCK CONFIG | Locks all CONFIG fields and configuration loading through LOAD. |
| SAVE CONFIG | Exports a text file named CF_YYYYMMDD_HHMMSS.txt with the current settings, including the BLE/USB options and MAC LOCK fields. |
| Name / Description | Free-form description of the series, firearm or ammunition. It appears in the PDF report as the separate “Name” field. |
| WEIGHT | Projectile weight. The unit depends on UNITS and MIX. Required for energy and Power Factor calculations. |
| ALARM VdV | Allowed velocity band. Example: 800d20 means 790–810. Leave empty to disable the alarm. |
| UNITS | METRIC: m/s, J, g. IMPERIAL: ft/s, ft·lb, gr. Changing units recalculates the displayed values. |
| MIX | Changes only the projectile-weight unit: METRIC + MIX = gr; IMPERIAL + MIX = g. |
| BLE AUTO | ON enables automatic BLE connection at startup and retries after a lost connection. |
| USB AUTO | ON enables automatic reconnection to a previously authorized USB device when the app starts or the connection is interrupted. The ON/OFF state is exported to the TXT configuration file as USB_AUTO=1 or USB_AUTO=0 and restored when the file is loaded. A system permission prompt may still be required. |
| MAC LOCK | ON binds BLE to the MAC address learned from the current last-connected chronograph. The device must be connected successfully at least once before the lock can be enabled. |
| TEST | ON displays the TEST section. The TEST setting is remembered. |
| KEEP ON SCREEN | ON/OFF; OFF by default. When ON, the screen stays awake while CHRONO is visible in the foreground, so measurements remain readable throughout a shooting series without touching the phone. The normal screen timeout returns when the app leaves the foreground. |
| DATA LATCH | ON keeps the measurement table when the app is closed or the device is restarted. On the next launch, the saved measurements are restored and statistics and charts are recalculated. New shots, EDIT, UNDO and LOAD changes are saved as well. OFF is the default: measurements are not stored for the next launch. Switching OFF deletes the stored copy without immediately clearing the current table; CLEAR removes the measurements. The configuration file records this option as DATA_LATCH=1 or DATA_LATCH=0. |
| NOTIFICATION | ON/OFF; OFF by default. Shows or hides the status line below the bottom controls. It reports BLE/USB connection states and errors, for example “BTLE ready: …”, “USB connected”, Bluetooth errors or cable disconnection. The app may also display messages about other operations in the same line. |
| STYLE | Selects one of four color schemes. |
7.1. MAC LOCK — fixed BLE device assignment
Purpose. MAC LOCK forces BLE connections to the MAC address that is captured when the lock is enabled. It prevents the app from automatically selecting another nearby chronograph, including a unit that advertises the same BLE name.
- Before enabling MAC LOCK, establish one successful BLE connection so the app knows the chronograph MAC address.
- Switching MAC LOCK from OFF to ON binds the lock to the MAC address of the most recently connected device. A previously locked address is not reused.
- While MAC LOCK is ON, the center BLE field shows the device name and is read-only. The displayed name may be refreshed after a successful connection, but the locked MAC address remains unchanged.
- If BLE AUTO is enabled, automatic reconnection also targets the locked MAC address.
- To assign a different chronograph, set MAC LOCK to OFF, connect the new device successfully, and then set MAC LOCK to ON again.
- If the app does not yet know a device MAC address, MAC LOCK cannot be enabled. Connect the chronograph once first.
MAC LOCK state, the locked MAC address and the displayed name are stored locally. They are also included in the current exported CONFIG TXT file as MAC_LOCK, MAC_LOCK_MAC and MAC_LOCK_NAME.
8. TEST, MAX and saved state
8.1. TEST
The TEST section is visible when TEST is enabled in CONFIG. MIN and MAX define the value range, and START adds a random test measurement to the current series in 0.1 increments. This function is intended for checking app operation without a chronograph.
8.2. Main-readout MAX
The bottom MAX control enlarges the main readout. Its state is remembered and can be restored after the app is restarted. The chart does not have a separate MAX function.
| Item | After restart |
|---|---|
| MAX — main readout | Yes. State is remembered. |
| STATISTICS | Yes. Expanded/collapsed state is remembered. |
| TEST | Yes. Setting is remembered. |
| EDIT | No. EDIT starts disabled. |
| SC on chart | No. The chart starts in COMPRESS. |
| DATA LATCH / measurement table | When ON, the saved shot series is restored after restart; when OFF, it is not retained for the next launch. |
9. Configuration file and data format
Configuration file. Use LOAD to import a saved TXT configuration. Velocities are stored internally in m/s and projectile weight in grams, regardless of the displayed units. USB AUTO is available in CONFIG and saved as USB_AUTO=1 (ON) or USB_AUTO=0 (OFF). LOAD restores this setting from the TXT file. FIT_SCREEN=0 is a legacy compatibility field and no longer has a switch in the interface.
Example CONFIG TXT file
CHRONO_CONFIG:1 NAME=JSB EXACT 4.5 WEIGHT_G=0.68 ALARM_VDV_MPS= FIT_SCREEN=0 BLE_AUTO=0 BLE_NAME=ChronoEXE BLE_MAC= TEST=0 MIX=0 STYLE=1 UNITS=METRIC KEEP_ON_SCREEN=0 DATA_LATCH=0 USB_AUTO=0 CHART_SCROLL=0 LOCK_CONFIG=0 TEST_MIN=230.0 TEST_MAX=260.0 NOTIFICATION_ON=0 MAC_LOCK=0 MAC_LOCK_MAC= MAC_LOCK_NAME= USB_VID=6790 USB_PID=29987
DATA_LATCH=1 enables restoration of the saved measurement table after restarting CHRONO; DATA_LATCH=0 disables it. This setting is independent of KEEP ON SCREEN.
BLE_NAME corresponds to the center field in the top bar. The same visible value is used as the PDF report heading. While a BLE connection is active, the device field may be temporarily locked until the connection is closed.
KEEP_ON_SCREEN=0 and NOTIFICATION_ON=0 mean OFF. USB_VID and USB_PID identify the USB adapter; the values shown above are an example, not universal defaults. The exported file also retains the MAC LOCK settings.
10. Troubleshooting
| Symptom | What to check |
|---|---|
| BLE cannot find the device | Make sure the chronograph is switched on and within range. Check the name or MAC address in the center field. For a new assignment, follow Appendix A. |
| BLE LED is red | Check Bluetooth and the required Android permissions. Details are shown as a normal status message below the bottom panel. |
| USB receives no data | Check the cable, USB/OTG adapter, device compatibility and chronograph connection. The app expects 19200 bit/s. |
| A measurement is highlighted as an alarm | Check ALARM VdV in CONFIG and the measured velocity. |
| Energy is missing or incorrect | Check WEIGHT and the mass unit determined by UNITS and MIX. |
| CONFIG cannot be edited | Disable LOCK CONFIG. |
| EDIT does not open MEASUREMENTS | The table is empty. EDIT opens MEASUREMENTS only when at least one measurement is present. |
| PDF report is not saved | Check that the series contains measurements and confirm the system file-save dialog. |
Appendix A. BLE device assignment and connection rules
A.1. BLE field
Initial state. The center field remains empty and shows CHRONO as a gray placeholder. An empty field means that the app uses the automatic device-assignment rules below.
Devices without a name. A BLE device that does not advertise a name is ignored and is not used for the connection.
A.2. First assignment
- When assigning a new chronograph for the first time, place the intended device close to the phone.
- The app scans available BLE devices and considers only devices that advertise a name.
- If no device has been remembered yet, the named chronograph with the strongest RSSI is selected.
- After a successful connection, the app stores the pair: device name + MAC address.
A.3. Subsequent connections
MAC address has priority. After the first assignment, the stored MAC address becomes the primary identifier. On later connections, the app looks for that same MAC address even if another nearby device has the same name and a stronger signal.
MAC LOCK. When MAC LOCK is ON, this rule becomes strict: BLE connection attempts target only the locked MAC address, and the center BLE field is read-only.
Name check. The remembered name is used as an additional identity check, and the device must still advertise a BLE name. A device without a name is ignored. A name conflict must not cause the app to switch automatically to another chronograph.
A.4. Duplicate names
If several chronographs within range advertise the same name, the name alone does not determine the connection. Once a device has been assigned, the stored MAC address resolves the conflict.
A.5. Changing the chronograph
Changing the assigned chronograph is an intentional action. If MAC LOCK is enabled, set it to OFF first. Place the new chronograph close to the phone, establish a successful connection, and then enable MAC LOCK again. The newly connected device MAC becomes the locked address.
| Situation | App behavior |
|---|---|
| First assignment | Selects the strongest named device; after connection, stores its name and MAC address. |
| Several devices with the same name | If a saved assignment exists, the stored MAC address takes priority over RSSI. |
| Device without a name | The device is ignored and no connection is established to it. |
| Stored MAC temporarily unavailable | The app should not switch automatically to a different device merely because it advertises the same name. |
| Another device has a stronger signal | If the remembered MAC is available, the app stays with the previously assigned chronograph. |