How to get a WebRTC Diagnostic Recording from Chrome 49+

WebRTC logoHave you ever had to support a WebRTC application and needed to get packet dumps from the user? Wireshark is a great tool for this, but asking a user to install it and make a dump rarely works. It’s just too complicated. So I was pretty excited when I read the Chrome 49 release notes which described (not in much detail) a new feature called the ‘RTC event log’. This is described as follows:

We now provide a new debug option in chrome://webrtc-internals for tracing internal details (e.g., BWE, jitter buffer state) for audio and video sessions. This option creates a log containing the timing and headers of packets as well as the timing of various internal events. We hope this will help resolve issues related to media transport and jitter buffers; attaching this log when reporting such issues will help us tremendously.

This turns out to be a really useful feature. Here is a quick guide how to generate an event log in ten easy steps.

internals-dump

  1. Open the chrome://webrtc-internals page in a new tab.
  2. Click “Create Dump” at the top of the page. This should look similar to what is shown above.
  3. Check the box “Enable diagnostic packet and event recording”.
  4. Select a folder to save recordings to. A separate folder makes things easier to find.
  5. Open another tab for the webrtc session. Do not close chrome://webrtc-internals until the session is over.
  6. Make a call.
  7. Before ending the call, go back to chrome://webrtc-internals. Click “Download the PeerConnection updates and stats data”. This downloads a file named webrtc_internals_dump.txt.
  8. End the call.
  9. Uncheck “Enable diagnostic packet and event recording” on the chrome://webrtc-internals page.
  10. Search for recording (might be multiple files) and send it over along with the downloaded chrome://webrtc-internals file.

Submitting both files with a bug report helps a lot in analyzing what went wrong.