- New Start screen like on Android: “MotionRecord”, cockpit name and GPS line at the top, then “READY 00:00:00”. Below that the cards “Preparation” (profile, recording mode, change profile, calibration / zero, layout), “Source / Quality” (GPS accuracy, GPS status, displays) and “Devices and extras” (OBD-II profile, set up engine data, sync, Wingman, sharing, quick start). The “Start recording” button stays fixed at the bottom
- New The bottom bar has five tabs like on Android: Recording, Dashboard, Library, Diagnostics, Options. The round record button and the “More” menu are gone — Analysis, Racing and LiDAR now live in Options under “Tools”
- New Three-dot menu “Cockpit design” at the top right: Instrument, Lab, Circuit or APEX R. The choice applies to the next recording — the start screen itself stays the same for every cockpit, as on Android
- New “Calibration / Zero” button in the “Preparation” card: “Calibration” opens the calibration screen, “Zero (2 s)” resets the calibration after a two-second hold — the recording recalibrates at start
- Usability Cockpits Instrument, Lab, Circuit and APEX R in the R2 design with consistent colours, fonts and grid. Missing readings show as “—” instead of zero — a dropped connection no longer looks like 0 km/h
- Usability The “OBD” badge at the top left shows the engine-data status even before the start — deliberately different from Android
Changelog
What's new in MotionRecord
The iPhone entries are the same texts you see in the app after an update. The iPhone version is in testing via TestFlight, the Android version is on Google Play.
iPhone & Apple Watch
- Fixed Recording rating: stops in one place (fuel, lunch, photo break) no longer count as GPS gaps and no longer cost points. Dropouts are now rated per hour instead of against a threshold that could never trigger
- Fixed Garage: scrolling on while place names load still delivers start and destination — previously the recording stayed without place names until the next app launch
- Fixed Live Activity: lock screen and Dynamic Island hardened — status and profile text now follow the language chosen in the app, and a changed data structure no longer silences the display
- New English complete: around 1,200 texts across app, Watch and widgets are translated
- Usability Feedback button in the tester box: opens an e-mail with the build number in the subject
- Fixed Wingman (OBD adapter): the data stream is noticeably more robust. Two parallel clients on the adapter — one of the main causes of connection drops — are now excluded, and the test stream stops even when you simply swipe the sheet away
- Fixed RaceBox: after a manual disconnect the app no longer reconnects on its own. History downloads no longer leave data behind in memory, and corrupt byte streams no longer grow the receive buffer without bound
- Fixed Kurvenfokus export: generating the export file is many times faster. Exported acceleration values during hard braking are now correct, and a tour keeps the same ID after an app restart instead of appearing as a new one
- Fixed Apple Watch: if you stop the recording on watch and iPhone at the same time, the export is no longer created and transferred twice
- Fixed Fixed: a crash when analysing recordings whose track never crossed the lap gate
- Fixed Time sync between iPhone and second device now actually works — previously the sync silently failed
- New Apple Watch: when starting a recording you can now choose 50 or 100 Hz for the motion sensors. 100 Hz captures even jerky movements in finer detail but uses more battery. And: longer recordings no longer lose data — oversized buffers are offloaded on the watch instead of silently discarding older values
- New Under “Settings → Appearance & language” you can now choose light, dark or system — independently of how your iPhone is set. Until now the app always followed the device
- New The same for language: German, English or the system language. If you use your iPhone in English but want to read MotionRecord in German, you can now do that
- Fixed The German permission dialogs are now localised explicitly. Until now they existed only as fallback values while the English version was already maintained
- Usability Switching language takes effect without a restart. Individual texts a view has cached follow on the next launch — a running recording is never interrupted
- New Every recording now has a map image instead of an orange line: your route on an OpenStreetMap background, with the place names of start and finish below it — “Geretsried → Bad Tölz”, or “Geretsried · round trip”. Until now a line told you nothing about which ride it was
- New Tap the preview image and a quick map view opens with route, distance and duration — without loading the entire recording. For a 144-minute ride that used to mean 864,000 data points and a matching wait. The full analysis is still reachable from the row itself or from the button in the quick view
- Fixed The route drawings were distorted. At our latitudes a degree of longitude is only about two thirds as long as a degree of latitude — that was missing from the calculation, so every route was stretched roughly one and a half times sideways. The shapes are correct now
- Performance The list recalculated everything while scrolling. For every visible row all raw GPS points were read from storage — about 8,600 points for a 144-minute ride just to draw 60 of them, and again every time the row reappeared. Preview, distance and place name are now created once per recording and only read afterwards
- Performance Search in the library stuttered while typing. With every letter the folder size of all recordings was re-read from storage, just to show the megabytes. That value is now determined once when the library is loaded
- New The preview survives deleting the motion data. If you free up space, the route stays visible — it is stored as a small separate file next to the recording and is included in backups
- Usability The recording screen was flooded with the lean-angle colour — yellow, orange or red across the whole display. In sunlight that was blinding, and the lean value itself was barely readable on top of it. The colour now sits where it belongs: in the gauge arc. The background stays dark. If you want the tint, it is still in the settings, now much more restrained
- Fixed In landscape the lower half of the screen was empty while everything was crammed into the top. The reason: the landscape switch tested a condition that practically never applies on iPhones — the entire branch never ran. Now the large lean display sits on the left and a column with recording status, GPS state, speed, view and stop on the right
- New The direction now appears below the lean value — “← LEFT” or “RIGHT →”. Previously only the magnitude was shown
- Fixed “REC” was squeezed into “R E” on the recording screen. It now appears in full, with the running time in the same badge
- Fixed Speed was shown twice on screen, next to a “42 GPS” reading that was not a measured value at all but a hard-coded number. Both are gone — speed now appears in one place
- Fixed The app no longer tries to repair a dead connection. It used to remember the last measured engine state forever — if the connection dropped while the engine was running, the engine counted as running for hours and every recovery attempt went nowhere (113 of them on 4 September). Now the engine state only counts if it is at most 15 seconds old
- Fixed Older recordings are corrected once when you open the library. The real counter is stored in each recording’s diagnostic log and is now carried over into the overview. On one test device that covers 16 rides with 240,953 rows of data that were previously listed as “no engine data”. Rides that genuinely had none stay as they are
- New New under Settings → OBD: the Wingman workshop. Everything in one place — am I on the right Wi-Fi, does the adapter answer and how fast, how much data arrives, which engine values your motorcycle actually delivers. Plus the value scan at the touch of a button and the full connection log. Most of this existed already, but in three different places
- New Eight seconds after the start the app checks whether engine data really arrives — and helps itself once. If no data comes at all it rebuilds the connection; if data arrives without engine values it re-sends the profile. Only if that does not help does it speak up: after about 16 seconds instead of 60, while you are still stationary
- New The app now notices when the connection to the adapter goes quiet. Until now it could stay open and still deliver nothing — on 6 September that meant 27 rows of data in 72 minutes instead of around 81,000. The app just kept waiting. New: if nothing arrives for ten seconds, the connection is rebuilt. In the following test it took 3.4 seconds to the first engine data
- Fixed The library reported “no engine data” for every ride with an OBD profile — even when data had been recorded. Spotted on a ride from 6 September: 144 minutes, 161,926 rows with RPM, gear, coolant temperature and engine load, all stored correctly, and still red. The counter was read only after the connection had already been closed and reset. It is now saved beforehand
- Fixed Older recordings stay red. Their status is stored that way on the device and does not change retroactively — but the actual engine data is complete and can be exported
- Fixed The diagnostic log listed only which values the app had requested, not which ones arrived. If the adapter was already set up correctly the list was empty — despite data flowing. Now both are in there, along with the response rate per value. That shows whether a value is missing because it was not requested, or because the motorcycle does not know it
- New New under Settings → OBD: a connection log with timestamps in plain language. It shows every step — network changed, data connection opened, first engine data, engine off, engine data lost. Shareable, and it survives an app restart
- New The Check connection button asks the adapter directly instead of trusting iOS. That matters: iOS reports a working Wi-Fi connection even when your iPhone is on your home network. It also reads whose configuration the adapter holds — if it is not yours, another app set it
- New Response rate for each individual value. Eleven configured values said nothing about whether they arrive — now you see separately for RPM, timing advance or gear how often each was delivered. That separates a silent adapter from a value your motorcycle simply does not know
- Fixed The app no longer blames another app without grounds. With an unknown cause it used to report that the Ridelink app was holding the adapter — even when it was not running. Now the value scan decides: if it finds values, another app really is holding them. If it finds none, the engine control unit itself is silent, and the message names the remedy — ignition off, ten seconds, back on
- Fixed Network state now measures the right thing. It used to ask whether the iPhone has internet — since the Wingman network offers none, the log constantly said cellular even while the adapter was reachable. Now what counts is whether a Wi-Fi path to the adapter exists. Without one the app waits instead of sending configurations into the void
- New Engine on and off is detected from the vehicle voltage and written to the log — the alternator lifts it above 14 volts, without it the battery sits at around 12.5
- Fixed The profile descriptions were wrong. They suggested that more values cost sample rate. Measured across five rides all profiles run at around 18.7 Hz — the adapter sets the rate, not the number of values. Discovery is therefore always the best choice, and it adds timing advance and manifold pressure
- Fixed The RaceBox download works. The device sends its stored rides over a different Bluetooth channel than the live data — in the same format. The app did not distinguish them and treated the incoming history as live values: they were displayed and immediately discarded, while the download waited endlessly for data it had just thrown away itself
- Performance The download is considerably faster. The progress display was redrawn for every single record — a hundred thousand times for 100,000 records, in the middle of the transfer. Now every 50
- Fixed The "Download sessions" button now always appears once the RaceBox is connected. Previously it was invisible until the device had reported its status — and that query ran only once, at connection time. If it failed there was no way back: no button, no message, no retry. There is now a "Query status" action, and the download button is merely disabled on an empty device instead of gone
- New Before downloading you now see what's on the device: number of records, approximate ride length, battery and free memory. Previously you pressed the button blind
- Fixed The download no longer hangs silently. If the RaceBox does not answer, or Bluetooth drops mid-transfer, the app says so within 20 seconds — previously the button just stayed greyed out forever, with no message
- Fixed An empty device memory is now named as such. Previously the app reported "no points with satellite fix" — the wrong explanation for "the device recorded nothing at all"
- Fixed Device status is now queried fresh before each download. Without it, the first attempt after connecting failed with a message nobody could interpret
- Usability If the device memory is protected by a code, the app now says so clearly instead of letting the download fail
- Fixed Engine speed, throttle and gear were missing from almost every recording — even though the Wingman was connected and the app showed live data. The reason: the adapter only delivers engine data while the right configuration is active inside it, and it can lose that. The app now notices and restores it by itself, while you ride
- New If engine data stops for more than 20 seconds while the engine is running, the app automatically scans in the background for the values your motorcycle can provide — and then requests exactly those. Recording continues uninterrupted
- Usability The OBD badge now tells the truth: it only turns green when engine data is actually arriving. "OBD –" means connected without engine data, "OBD SCAN" means a scan is running, "OBD !" means the data has dropped out
- Fixed Brief connection dropouts no longer cost you the rest of the ride — the app now keeps retrying instead of giving up after about half a minute
- Performance Recording starts immediately instead of waiting for the adapter to respond
- New RaceBox recordings can now be saved: the Bluetooth download already fetched rides from the device but only listed them — they were gone once you closed the sheet. They now land in your library like any other recording, with map, viewer and export. No cloud, no RaceBox account
- New Starting a recording now shows an overview first: engine data, GPS, motion sensors and RaceBox with a traffic light — you see what will be recorded before you ride. If something is missing you can set it up right there or deliberately start anyway. Can be turned off in settings
- New If engine data is missing, the app can set it up by itself — once per session, without asking. If you prefer to check yourself, turn it off in settings
- Fixed The pre-ride check now verifies that engine data actually arrives — previously it only checked whether it was configured in the adapter. On 3 Sept the RPM PID was correctly configured for 76 minutes, yet nothing came through. The new verdict "Configured but silent" names exactly that case
- New The RaceBox tile now shows the measured data rate in Hz. Worth knowing: the RaceBox itself determines the rate — the app setting cannot change it. At least you can now see immediately what is actually coming in
- New If the pre-ride line is not green, there is now a "Set up engine data" button. It asks the adapter which values your motorcycle provides and configures exactly those — while stationary, where it works reliably. Takes about 10 seconds, then you are good to go
- New New before you start: a line above the GPS status tells you whether engine data is to be expected — and if not, why. The most common case: the adapter serves only one app at a time, so if the Ridelink app is still running, MotionRecord gets no engine data. Tap to check again
- New The OBD adapter's data rate is now visible while riding — in the "Sensors" tile below the IMU rate and in the Wingman tile. It reflects the last few seconds rather than the average since start, so a drop shows up immediately
- New New shift counter tile for the cockpit — counts upshifts and downshifts and shows the current gear. Brief clutch pulls and flicker in the gear estimate are filtered out so the number stays right
- New New RaceBox tile for the cockpit — signal quality, satellites, speed, altitude, G-forces and heading are now visible while riding instead of only in the dashboard. Selectable in the cockpit settings
- New Complete app available in English — iPhone, Apple Watch and widgets follow the system language, including this changelog
- Usability Settings are now reachable globally via "More" instead of being hidden behind the recording tab
- Fixed Fixed a crash in mount calibration — affected build 29 on iOS 18.7 and happened right when opening the calibration screen
- Fixed Long recordings no longer block the app: after a crash, recovery used to load everything at launch — with a 2-hour recording the app would not start at all. It now runs in the background with a progress banner, and a corrupted data block is skipped instead of discarding everything
- Fixed Recording data is now stored where iOS may not clear it on its own — previously an unsaved recording could vanish silently
- Fixed Leftover Live Activity after force-quitting is cleaned up; stop directly from the lock screen
- Usability Tester feedback implemented: the selected mode is remembered, the stop button stays visible and the transfer from the watch no longer freezes
- Usability Progress bar instead of a spinner: when opening in Kurvenfokus you now see the transfer progress as a percentage — the spinner kept turning even when nothing was happening
- New Export now visible everywhere: share button on every library row, in the viewer (map + toolbar) and in the tour summary ("Export other formats…")
- New Send by e-mail: mail a recording as a compact ZIP straight from the app — subject and tour info pre-filled
- New Every format mailable: after choosing the format you decide — share or e-mail, with a warning for attachments over 20 MB
- New Quick Share ⚡: the app remembers your last successful export combination — one tap repeats it (lightning button on library rows, in the viewer and at the top of the export dialog)
- New Three cockpit designs: CIRCUIT, LAB and APEX-R — with needle gauge, telemetry tiles and fullscreen hero (portrait + landscape)
- New Design wizard on first launch: pick a cockpit style once — changeable anytime later under Settings → Cockpit design or via swipe gesture during recording
- New Live design switcher: change the cockpit design during recording with a swipe gesture
- New APEX-R glass navigation: new bottom bar with a central REC button replaces the native tab bar
- New GPS quality before the start: accuracy + rating right on the recording screen
- New Wingman key now entered in Settings (safely in the Keychain) instead of hard-coded in the build
- New Reset button (recalibration) in both cockpits
- Fixed Duplicate red record button fixed: the bar is hidden while recording, on the recording tab only an outline remains — the stop button (hold 1s) is the only red button
- Usability Stop hint: tapping the stop button too briefly now shows a hint "hold for 1 second" with gentle haptic feedback
- Fixed Duplicate exit arrow in cockpit fullscreen removed
- New Glove mode (Settings): XL control zones — the lower third stops the recording (hold 1.5 s), the top band pauses (tap 2×)
- New Design lock while riding: swipe to switch cockpit only in the first 30 s after start and while stationary — never at speed
- New Selectable hardware button (Volume Up/Down/Action Button) with a practice wizard — stopping runs via a 5 s countdown with sound, press again to cancel
- New Live Activity: recording status, duration and pause on the lock screen and in the Dynamic Island
- New Smart auto-pause: engine off (refueling) pauses after ~30 seconds, at a traffic light the recording always keeps running — resumes automatically when you set off, with an audio confirmation
- New RaceBox Mini/Micro: BLE connection with live status (satellites, fix, accuracy, speed) and 25 Hz GPS
- New Live dashboard shows RaceBox data during recording
- New Dual/triple GPS viewer: phone (cyan), RaceBox (red) and Wingman (orange) side by side on the map
- New RaceBox export: Kurvenfokus, CSV and GPX straight from RaceBox data
- Fixed Wingman: the OBD profile is re-sent automatically after engine start and connection loss
- Fixed The quick view after recording shows the complete tour again
- Fixed Security: API secret removed from the app build (Build 25 was pulled because of this)
- New Ridelink Wingman OBD-II integration: RPM, gear, throttle and coolant temperature live in the dashboard and fullscreen
- New OBD profiles Racing/Touring/Discovery with 15 PIDs including gear detection
- New Racing OBD dashboard: 4 OBD widgets with a 3-color indicator
- New Sync beep: a BIP-BIP-BIP-BIIIP tone sequence sets markers in the data — for syncing with video recordings
- New Developer dashboard with OBD diagnostics widget and simulator
- Fixed OBD connection: auto-reconnect, decoder fixes, correct RPM values
- Fixed Export stability: ChunkWriter fix for large recordings
- Fixed Standard mode now saves full IMU data (100 Hz) — Developer mode is no longer required for it, only LiDAR stays Developer-exclusive
- Fixed Metadata consistency: the sample counter now counts only samples that were actually written
- New Ride profile preview: automatic riding-style classification (Cruising/Touring/Sporty/Aggressive), braking and acceleration events, smoothness score, leg detection
- New Lean source note: shows whether lean angle is derived from IMU calibration, raw sensor or GPS estimate
- New Keep GPS only: shrink large recordings — deletes raw IMU data, keeps GPS + metadata (context menu)
- Fixed Large recordings (2 GB+): the viewer now loads in the background — no more crash when opening
- Usability Loading indicator when opening large recordings
- New Fitness & load score: HR zones (Z1–Z5), avg/max/min BPM, TRIMP load index 0–100 — appears automatically for Watch recordings
- New Backup export: save all recordings as a ZIP with GPX per tour (Library → Menu → Save all)
- Fixed Auto-repair: missing tour duration is reconstructed automatically from GPS data at app start
- Fixed Recording timestamp: startDate was incorrectly set when stopping instead of starting — fixed
- Fixed Heart-rate storage: HR data from the Watch wasn't saved to disk — now persisted as separate chunk files
- Performance Large recordings (250+ MB): the viewer decimates motion data to max. 20K samples instead of loading everything into RAM
- New Open in Kurvenfokus: import tour data into Kurvenfokus right after recording (1 tap)
- New Save locally: store recordings in Downloads/MotionRecord
- New Import system: restore saved recordings (Library → Import)
- New Crash recovery: data is saved continuously in chunks (2000 samples/chunk)
- Performance Round-trip tests: Export → Import → identical data verified
- New Tour summary: automatic summary after every ride — map, distance, duration, elevation gain, max lean, corners, max G + share
- New High-contrast mode: sun icon in the toolbar — solid black + bold colors for outdoor visibility
- New Volume-button trigger: press volume 2× = start/stop recording (can be enabled in Settings)
- New Auto-pause: detects a standstill (>5 min) and pauses the recording automatically
- New Fullscreen lean mode: huge lean angle display, toggle with a double tap
- Usability Stop button: hold (1s) with growing ring feedback — hint when the tap is too short
- New Mount calibration active: the lean gauge shows real lean angle in the motorcycle frame
- New IMU lean: the gravity vector is transformed into the vehicle coordinate system via a rotation matrix
- New Kurvenfokus mode as the new default (50 Hz sensor data)
- New Selectable recording mode: Standard / Kurvenfokus / Developer
- New Storage projection during recording (~MB/h)
- New Auto-export: send straight to Kurvenfokus after stopping
- New Hz configurator in Developer mode (10/50/100 Hz)
- New Mode selection on first launch
- Fixed Lean angle limit adjusted to ±60°
- Usability Fallback: without calibration, GPS-based lean is still used
- Usability Stop confirmation: a dialog prevents accidental stopping
- New Max-values widget: peak speed, lean, G-forces live
- Usability Simplified calibration: clearer texts
- New Walking dashboard: G-Scope + live map automatically
- New G-Force charts: timeline scrubber + GG diagram
- New G-Scope widget: radar display for G-forces
- New Dashboard presets: Racing, Touring, Minimal, Walking
- Usability Glass-morphism UI for all widgets
- New Racing analysis: laps, sectors, ideal line, comparison
- New Export: JSON, GPX, KML, HTML, Kurvenfokus (GPS+IMU)
- New Mount calibration: 3 phases (standstill, rocking, setting off)
- New Sensor recording: acc, gyro, mag, GPS, barometer
- New Signal processing pipeline: 6 filters + Butterworth IIR
- New 3 profiles: Walking, Motorcycle, Car
- New Live dashboard with configurable widgets
Android
- NewUpdated for Android 16 – runs reliably on all current devices
- NewThree cockpit designs: Classic, Circuit (race) & Lab (measurement) – switchable in settings
- NewComplete app in English; app language selectable from Android 13 on
- NewFull-screen lean angle in every design
- FixedLean angle fixed in the Kurvenfokus export (left/right was swapped)
- NewKurvenfokus export now lean (~1 MB)