FastF1 can capture live timing and telemetry data during F1 sessions using the SignalRClient. This allows you to record data in real-time as races, qualifying, and practice sessions happen.
Live timing data cannot be used in real-time during a session. The data must be saved and then loaded after the session for analysis using Session.load().
Overview
During F1 sessions, timing data and telemetry are streamed live using the SignalR protocol. The SignalRClient connects to this stream and saves the raw data to a file for later processing.
What you can capture:
- Live timing data (lap times, sector times, gaps)
- Position data (track position, speed)
- Telemetry (throttle, brake, gear, RPM)
- Race control messages
- Tire strategy information
- Weather data
- Team radio metadata
Setting Up the Live Timing Client
Import and configure the client:
Configuration Parameters
filename: Path where the data will be saved. The file will contain raw SignalR messages.
filemode:
'w': Overwrite existing file (default)
'a': Append to existing file (useful if restarting during a session)
timeout: Number of seconds to wait without receiving data before automatically exiting. Set to 0 to disable timeout.
logger: Optional custom logging.Logger instance for error logging
no_auth: If True, attempts to connect without authentication. May only work for some sessions or return partial data.
Capturing Live Data
Basic Usage
Start the client to begin recording:
The client will:
- Connect to the F1 live timing stream
- Subscribe to all available data topics
- Write incoming messages to the file
- Continue until timeout or manual interruption (Ctrl+C)
During a Live Session
Run this during a practice, qualifying, or race session:
Handling Connection Issues
If the client disconnects during a session, restart it in append mode:
Data Topics Captured
The client automatically subscribes to these data streams:
- Heartbeat: Connection health monitoring
- AudioStreams: Audio stream metadata
- DriverList: List of participating drivers
- ExtrapolatedClock: Session timing information
- RaceControlMessages: Race control decisions and flags
- SessionInfo: Session metadata and configuration
- SessionStatus: Session state (started, stopped, finished)
- TeamRadio: Team radio transmission metadata
- TimingAppData: Timing app data (gaps, intervals)
- TimingStats: Statistical timing information
- TimingData: Core lap and sector timing
- TrackStatus: Track status and flag conditions
- WeatherData: Weather conditions
- Position.z: Compressed position data
- CarData.z: Compressed car telemetry
- ContentStreams: Content stream information
- SessionData: Session-specific data
- TopThree: Top three positions
- RcmSeries: Race control messages series
- LapCount: Current lap count
Loading Captured Data
After capturing live data, load it for analysis using FastF1’s standard API:
Processing Raw Live Data
For advanced use cases, process the raw SignalR messages:
Authentication
By default, the client authenticates with F1’s API to access complete live timing data:
To attempt connection without authentication:
Unauthenticated access may only work for certain sessions or return incomplete data. Use authenticated access for reliable data capture.
Custom Logging
Provide a custom logger for more control over logging:
Best Practices
File Organization
Organize captured files systematically:
Monitoring During Capture
Monitor the capture process:
Error Handling
Limitations
- No Real-Time Analysis: Data must be saved first, then loaded after the session
- Network Dependent: Requires stable internet connection during the session
- Authentication May Be Required: Some sessions may require authenticated access
- Raw Data Format: Captured data is in raw format and requires processing with FastF1
Troubleshooting
No Data Received
- Verify the F1 session is currently active
- Check your internet connection
- Try with
no_auth=True if authentication fails
- Ensure no firewall is blocking WebSocket connections
Connection Timeouts
- Increase timeout value:
timeout=300 (5 minutes)
- Use append mode (
filemode='a') to resume after disconnection
- Check F1’s official timing app to verify stream is active
Incomplete Data
- Use authenticated access (
no_auth=False)
- Ensure capture started before session began
- Check for network interruptions in logs
Next Steps