flash-b2g

Shallow-flash Gecko and Gaia on Firefox OS devices from Mozilla's public build server.

Usage no npm install needed!

<script type="module">
  import flashB2g from 'https://cdn.skypack.dev/flash-b2g';
</script>

README

Flash B2G

Shallow-flash Gecko and Gaia on Firefox OS devices from Mozilla's public build server with just one command.

NPM version Dependency Status

What does it do?

  1. Downloads build, matched by device, channel and date, from http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/
  2. Flash Gecko and Gaia, a so called shallow flash)

What is Shallow Flash?

+-------=---+
|   Gaia    | ]                ]
|  -------  | ]- Shallow flash ]
|   Gecko   | ]                ]- Base image flash
|  -------  |                  ]
|   Gonk    |                  ]
|           |
|-----------|
|     ⊙     |
+-----------+

Firefox OS has three layers, where most development happens in the Gecko (browser engine) and Gaia (user interface) layers. Gonk and lower contain proprietary bits like hardware drivers and RIL and are therefor not build by Mozilla.

For a full base image flash check Flame software updates on MDN.

What are the alternatives?

Dependencies

Installation

Use the flash-b2g command as global NPM command:

> npm install -g flash-b2g

Usage

> flash-b2g --help

Shallow-flash Gecko and Gaia on Firefox OS devices from Mozilla's public build server (http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/).
Usage: flash-b2g [device] [channel=central]

Examples:
  flash-b2g flame-kk 2.0                    Flash a flame with 2.0 build.
  flash-b2g flame-kk --folder ~/            Flash a flame with a nightly build (downloaded to ~/)
  flash-b2g flame-kk --folder ~/ --local    Flash a Flame device with a previously downloaded build in ~/.
  flash-b2g hamachi aurora --eng            Flash an Hamachi device with an aurora engineering build.


Options:
  --device, -i     Device (flame-kk [kitkat base image], flame, helix, hamachi, …)
  --channel, -c    Channel (central, aurora, 1.4, …)                                [default: "central"]
  --date, -t       Build date (for regression window testing)                       [default: "latest"]
  --eng, -e        Engineering build (for marionette testing)
  --dir, -d        Directory to keep downloads (defaults to temp)
  --local, -l      Use local files, skipping FTP (requires --dir)
  --profile, -p    Keep profile (no promises)
  --remotify, -r   Set device into development mode
  --only-remotify  Skip flashing, only set development mode
  --help, -h       Show this help

Settings for --remotify

Making life easy for developers (read: not for consumers!). This does not only enable remote debugging but also all the little hidden preferences that make development easier, like disabling lockscreen (which would prevent remote debugging) and the annoying remote debugging prompt.

Preferences

  • 'devtools.debugger.forbid-certified-apps': false Enable debugging for certified apps
  • 'devtools.debugger.prompt-connection': false Disable prompt for remote debugging
  • 'b2g.adb.timeout': 0 Disable remote debugging timeout, (bug 874484)
  • 'layout.css.report_errors': false Disable CSS errors in logcat

Settings

  • 'developer.menu.enabled': true
  • 'ftu.manifestURL': null Disable First-Time-User experience
  • 'debugger.remote-mode': 'adb-devtools' Enable full remote debugging
  • 'screen.timeout': 600 10min screen timeout
  • 'lockscreen.locked': false Unlock screen on launch
  • 'lockscreen.enabled': false Disable lockscreen