Loop/Try Loop

From MozillaWiki
Jump to: navigation, search
Last updated: 2015/03/10

Loop is a two way audio video application that uses webRTC to communicate.

Here's a diagram of how it works: Loop diagram.png


User Experience

  • generally this is a 1 to 1 audio/video. The call endpoint creator will be in Firefox/App hosted environment and the receiver of the call link will be running in the standalone-client which is embedded in the page. A circle of connections can be created between multiple users but this isn't a recommended configuration.
  • Currently working: Desktop to desktop, phone to phone

Firefox OS Loop Client

src: https://github.com/mozilla-b2g/firefoxos-loop-client

Installing Loop Client on device

  1. flash fxos 2.0 to your phone
  2. make sure phone has settings > adb and devtools access and remote debugging turned on.
  3. tether phone to computer
  4. git clone https://github.com/mozilla-b2g/firefoxos-loop-client.git
  5. open Fx nightly to about:app-manager [more info]
  6. click connect to device with device id (random 8 character id)
  7. phone should display allow to connect dialog, click yes
  8. In Apps tab, click add packaged app
  9. browse dialog to the firefoxos-loop-client repo location
  10. click 'update' button
  11. loop should be installed on phone
  12. open loop client - follow menu to use

Some notes about the FxOS Loop Client behavior

Logging-in You need to login either with FxAccounts or using your phone number.

  1. For FxAccounts you just need to follow the same flow that is used for any other service using it.
  2. For Phone Number you need to enter the phone number you would like to use, you will receive a PIN and with that PIN you can login to Loop.

Calling another user

  1. You can just call other Loop registered users, otherwise, you will be given the option to share a URL so non-Loop users can click on it and callback you.

There are three ways to call a user with Loop:

  1. Via Loop call log, this option is not available at the start as the Call Log should be empty. It works in the same way the regular dialer, clicking on an entry just redials to the call log entry.
  2. Via Loop contact picker: click on the “contact” icon on main loop screen, that will take you (via an activity) to the contacts application, where you can select the contact you would like to call to.
  3. Via FirefoxOS Contacts Application: Open contacts application, in every contact detail with an e-mail address or phone number user will have the option to start a Loop call (video and audio buttons). NOTE: Showing the button does not imply the contact details correspond to a Loop user, i.e. Clicking on the button might open the Loop app but just for sharing a callback URL.

Loop Settings In Loop settings, you have the option to change the default call mode (audio or video – only applies to calls made via the Loop contact picker) and the default camera to be used.

IxD/Wireframes for Loop FxOS 1.1 version


Desktop Firefox Loop Client

  1. Get Firefox Nightly
  2. click on the smiling face in the talk bubble in the navigation bar
  3. copy URL and open it on another device (another person or device)
  4. click allow when prompted to use cam/mic

Standalone Loop Client and Client Tests

There's a web page that creates the webRTC peer-2-peer call. You can test that here in any browser:

full instructions are here:

Client Debugging


  • push these gecko prefs:
user_pref("identity.fxaccounts.loglevel", "Debug");
user_pref("services.mobileid.loglevel", "Debug");

you should see traces like such in logcat:

I/Gecko   (11667): 1406135778375	MobileId	DEBUG	getMobileIdAssertion


  • about:webrtc
  • Browser Console with loop.debug.loglevel = Debug
  • Terminal output with identity.fxaccounts.loglevel = Debug and services.hawk.loglevel = Debug
  • Web Console for link clicker UI


Standalone Loop Client

Snapshot of mozilla-central src:


There are four servers involved:

  • Loop-server (call)
  • MSISDN gateway
  • Firefox Accounts via OAuth
  • TokBox TURN server

How to run Tests

Server Debugging