By now, many of you have heard about one of my projects i’ve been heads down on… Firefox OS. Codename’d “Boot 2 Gecko”, it’s mozilla’s project on putting together a fully Web-based OS that will take on the smartphone market. It will support everything you would expect from a smartphone, (friend dialing, spouse messaging, internet browsing, web gaming, photo taking, video watching, and music bumping!) Read the blogpost for more details on what and where we’re deploying to.
On the Quality front, i’ve been building up a small-but-growing team to take on this behemoth project. The phone we’re working on will consist of 3 basic software layers: Gonk (kernal, HAL, and low-level components), Gecko (rendering engine, web APIs), and Gaia (HTML5 User interface layer). Our test approach is to create mochitests against the DOM and API layer, and run regression tests against a Jenkins CI system. On the UI, we will take a more traditional acceptance approach, executing testcases against Apps in an end to end scenario; and building webapps that will utilize supported B2G apis. All this, to delivery in a very aggressive timeline, and working with multiple partners on different Quality approaches at every level.

We’ve been culturally challenged to build up a interested community of testers, but limited to our distribution of builds due to legal contracts. However, the release engineering team was able to get Daily desktop builds created and published online for anyone to play with. Refer to Gaia/Hacking for setup instructions. If you’re a web developer, you can use these builds to create and test your webApp against. If you’re looking to help do some testing, these desktop builds will also give you an immediate opportunity to play with and help us write testplans and file bugs. We encourage anyone interested to give the desktop builds a spin (available on Mac, Windows, and Linux), and get involved with the project!
For more information on getting involved with Development and Testing, visit https://wiki.mozilla.org/B2G to get started.
Update: Many are wondering why they see a “black” screen after launching the B2G Desktop build. It’s likely because you havent set up a Gaia profile prior to launching. here’s how you do it. (again, refer to Gaia/hacking for better steps!)
1) For your win32/linux/osx computer, download and install a nightly “B2G Desktop” build from: http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/
2) on command line, run:
- $ git clone git://github.com/mozilla-b2g/gaia
- $ make -C gaia profile
- $ /path/to/b2g -profile gaia/profile
- (eg. Tonys-MacBook-Air:MacOS tchung$ ./b2g -profile /Users/tchung/Desktop/DailyB2G/07172012_desktop/gaia/profile)
3) you should see content now.
Update 2: Building Desktop builds on Windows
There is a discussion thread started about building on windows. it’s much more complicated, and i personally have not tried. Please give it a spin and let us know how it goes!
https://groups.google.com/d/topic/mozilla.dev.b2g/ALhvaLP-WtA/discussion

July 18, 2012 at 8:12 am
I’m still getting black screen on the desktop builds under Linux, and everyone on the IRC channel seems to ignore me.
When running with the jsconsole parameter, the following error message apprears. I don’t know yet if it is caused by the same issue or another.
Failed to load native module at path ‘components/libmozgnome.so’: (80004005) components/libmozgnome.so: cannot open shared object file: No such file or directory
Please help.
July 18, 2012 at 3:37 pm
Hi Tomer,
regarding the black screen issue, have you set up a Gaia profile yet to point to before launching? That’s needed to fix the B2G Desktop issue on linux. Refer to: https://wiki.mozilla.org/Gaia/Hacking for more directions.
I have no idea about the missing libmozgnome.so error. if irc is ignoring you, please try posting to mozilla.dev.b2g if not already. People there seem more responsive.
Good luck!
July 18, 2012 at 6:20 pm
I have another problem on Linux(Ubuntu 12.4) when I try to run ./b2g :
XPCOMGlueLoad error for file /home/uther/Apps/b2g/libxpcom.so:
libxul.so: cannot open shared object file: No such file or directory
Couldn’t load XPCOM.
July 18, 2012 at 7:42 pm
You are probably running 64-bit Ubuntu, install 32-bit libs.
July 18, 2012 at 8:02 pm
Clicking seems to do nothing? I can’t launch anything from the icons. I can only drag, and also rightclick enters some mode where some of the icons “pulse”.
July 18, 2012 at 9:09 pm
Hi azakai, which desktop build are you running? Earlier this week, there was a bustage from Apps team on b2g that was recently fixed; that describes your no-click issue. https://bugzilla.mozilla.org/show_bug.cgi?id=774216
July 19, 2012 at 7:15 pm
I tried the linux desktop build from yesterday
July 18, 2012 at 9:39 pm
[...] very parallel to what Google is attempting with PCs and Chrome OS. (The technically curious now can try running Firefox OS on their PCs, by the [...]
July 19, 2012 at 10:21 am
I don’t know what to do after $ make -C gaia profile … I am not able to run ./b2g -profile … It says not found
July 19, 2012 at 2:27 pm
Same problem here, “no such file or directory”. can you give us a hint?
July 19, 2012 at 7:52 pm
I solved the problem. 64-Bit-Linux wont launch the b2g file. It worked using linux mint 13 cinnamon x86.
July 20, 2012 at 3:00 pm
I have the same problem, did you get to fix yours?
I’m running ubuntu 12.4 32bit
July 19, 2012 at 2:50 pm
Worked great for me, thanks for the instructions. On Mac OS X my final command was: “/Applications/B2G.app/Contents/MacOS/b2g -profile /Users/tbassetto/Code/gaia/profile”
July 19, 2012 at 7:48 pm
So, I’m guessing that you have to compile GAIA? Its not a component of B2G?
July 19, 2012 at 11:09 pm
correct, Gaia is a separate project from B2G. In fact, here’s all the related projects rolled up under mozilla-b2g.
https://github.com/mozilla-b2g/
July 19, 2012 at 7:58 pm
Hello.
The ones who get a « Couldn’t load XPCOM » error, maybe you need some dependencies.
I use Arch Linux and according to this page : https://developer.mozilla.org/en/Mozilla/Boot_to_Gecko/Setting_Up_Boot_to_Gecko_Build_Environment_for_Arch_Linux , a dependency does not exist.
So I’ll install a Linux Mint VM to try again cause I can’t get to get it. =_=
July 19, 2012 at 10:25 pm
[...] If you’re curious about what makes Firefox OS tick or just eager to give the new OS a try, a blog post by Mozilla’s Tony Chung has some brief instructions on how to get started. 2012 19 [...]
July 19, 2012 at 11:50 pm
Should the profile be built on the same platform as the emulator? Built a profile in Ubuntu 11.10 x64, loaded it in the Windows emulator. The date covers up the camera/unlock slider, and I’m unable to do anything. http://i.imgur.com/eZM1V.png
July 19, 2012 at 11:54 pm
looks like a bug. i built on yesterday’s build from 07-17-2012, and got the homescreen image from my post.
July 20, 2012 at 3:04 am
Hi,
Is it possible to push this build into any mobile and check it out??
July 20, 2012 at 10:08 am
the program can’t start because msvcr100.dll is missing from your computer
July 20, 2012 at 5:37 pm
You must install “Microsoft Visual C++ 2010 Redistributable Package” from Microsoft. It is a cost free download.
July 20, 2012 at 1:53 pm
Hi,
Can you post Windows specific instructions for the black screen issue please?
July 20, 2012 at 4:01 pm
I havent tried it myself on windows. but the instructions should be similar. create a directory, unpackage your b2g nightly there, run git clone (assuming you have git set up – https://help.github.com/articles/set-up-git), and make your profile. There’s no UI for this, so do this in your terminal window.
July 20, 2012 at 4:18 pm
I’m stuck on the “make a profile” step. Not sure where I’m supposed to do that. In Firefox Nightly? Gaia? command prompt?
July 20, 2012 at 2:49 pm
I’m trying to run g2b unsuccessfully.
I manage to do
$ git clone git://github.com/mozilla-b2g/gaia
$ make -C gaia profile
but then i cannot get any further
on my file directory i have the following:
/home/user/
/Desktop
/Documents
/downloads(inside downloads is the unzipped nightly B2G Desktop
/gaia(folder created by the previous steps) directly on my user folder
/Music
…etc…
July 20, 2012 at 2:57 pm
then when i type the following
$ b2g -profile /home/user/gaia/profile
i get the following
No command ‘b2g’ found, did you mean:
Command ‘b2m’ from package ‘xemacs21-bin’ (universe)
Command ‘b2f’ from package ‘alliance’ (universe)
b2g: command not found
What am I doing wrong… help please anybody!?
July 20, 2012 at 3:58 pm
is that the actual path name to your profile? also, depending on which directory your b2g process is in, you may need to say ./b2g.
Again, my example was:
$ ./b2g -profile /Users/tchung/Desktop/DailyB2G/07172012_desktop/gaia/profile
July 20, 2012 at 3:54 pm
I can boot it easily but whenever I am launching an App there seems that there is some kind of lock somewhere:
Opened socket on 9999
======================= webapi.js =======================
======================= webapi.js =======================
###################################### forms.js loaded
MOZSETTINGS-GET-WARNING: language.current is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.roaming.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.apn is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.user is not in the database. Please add it to build/settings.js
###################################### forms.js loaded
MOZSETTINGS-GET-WARNING: ril.data.passwd is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.mmsc is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.mmsproxy is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.mmsport is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: devtools.debugger.remote-enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: devtools.debugger.log is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: devtools.debugger.remote-port is not in the database. Please add it to build/settings.js
###################################### forms.js loaded
###################################### forms.js loaded
======================= webapi.js =======================
###################################### forms.js loaded
###################################### forms.js loaded
======================= webapi.js =======================
MOZSETTINGS-GET-WARNING: devtools.debugger.force-local is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: debug.fps.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: debug.paint-flashing.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: screen.timeout is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: screen.automatic-brightness is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: screen.brightness is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: homescreen.wallpaper is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ums.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: debug.grid.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: accessibility.invert is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: lockscreen.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: lockscreen.wallpaper is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: lockscreen.passcode-lock.code is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: lockscreen.passcode-lock.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.radio.disabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: wifi.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: bluetooth.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: tethering.usb.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: tethering.wifi.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: tethering.wifi.connectedClients is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: tethering.usb.connectedClients is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: alarm.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: bluetooth.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: bluetooth.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.vibration is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.clicksound is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.wordsuggestion is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.english is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.dvorak is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.spanish is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.portuguese is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.otherlatins is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.cyrillic is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.hebrew is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.zhuyin is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.pinyin is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.arabic is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.greek is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: keyboard.layouts.japanese is not in the database. Please add it to build/settings.js
###################################### forms.js loaded
###################################### forms.js loaded
======================= webapi.js =======================
dyld: could not load inserted library: /Users/fdimeglio/src/B2G.app/Contents/MacOS/libplugin_child_interpose.dylib
[Parent 69987] WARNING: parent WaitForMessage() failed: 0×10004003 (ipc/rcv) timed out: file /builds/slave/m-cen-osx64-gecko-ntly/build/ipc/glue/GeckoChildProcessHost.cpp, line 595
July 21, 2012 at 4:16 pm
this shoud help: https://bugzilla.mozilla.org/show_bug.cgi?id=774215
July 23, 2012 at 10:12 am
Well it doesn’t. I copied the lib at the desired place but still gets the same error. What can I do?
July 23, 2012 at 7:25 pm
Ok I’m replying to myself here: you need to copy both libplugin_child_interpose.dylib and dependentlibs.list from the profile into B2G package.
July 23, 2012 at 7:32 pm
@Matt Glad to know that you find a solution. Coping libplugin_child_interpose.dylib was enough for me (MAC OS X Lion)
July 24, 2012 at 3:08 pm
Same problem here. I copied the lib and .list but I still gets the error. (Snow Leopard)
July 21, 2012 at 9:11 am
Hi,
Looking good!
Would it be possible to run on a RaspberryPi?
That would be neat a bootloader and a browser
/Fred
July 22, 2012 at 4:19 pm
As far as I know x86/amd64 only
July 22, 2012 at 11:40 pm
Is it just me or isn’t possible to run b2g on a samsung s2,
so why not the simpler arm on a rasp pi?
July 22, 2012 at 4:16 pm
Opened socket on 9999
###################################### forms.js loaded
MOZSETTINGS-GET-WARNING: audio.volume.master is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: language.current is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.roaming.enabled is not in the database. Please add it to build/settings.js
###################################### forms.js loaded
MOZSETTINGS-GET-WARNING: ril.data.apn is not in the database. Please add it to build/settings.js
./b2g: symbol lookup error: /home/ryan/Desktop/b2g/libxul.so: undefined symbol: gdk_visual_get_depth
Not sure what dep I’m missing
July 22, 2012 at 8:24 pm
Yep, same error here. Probably outdated/missing gdk libraries.
July 23, 2012 at 12:38 am
Probably my GTK being 2.20 on my machine, still running Linux mint 9.
July 22, 2012 at 4:41 pm
I have seen the best browser.
July 23, 2012 at 6:52 am
I like it. Exciting times again for Mozilla.
Initially had trouble after setting up Gaia profile for mac. Ended up here https://wiki.mozilla.org/Gaia/Hacking#Mac and ran:
$ DEBUG=1 make && Desktop/B2G.app/Contents/MacOS/b2g -profile ~/dev/gaia/profile
July 23, 2012 at 6:58 am
ie ran that while in gaia dir
July 23, 2012 at 10:33 am
I built it a few day ago on linux mint (m13), firefosOs seems simple and funny. A good thing to use Js for UI. Just a little bit desappointed by icons UI, because there is’nt nothing new on this point, just like android and iOs.
I would expect something more like in metro UI : dynamic icons or tiles with more information than simple butons.
July 23, 2012 at 8:12 pm
I like this proyect an the better way to try the full performance for Firefox OS is publishing and x86 .ISO image for native boot
July 25, 2012 at 7:43 am
iam just from ente ring if any proble m i will make you know.
July 25, 2012 at 9:27 pm
Can I build the gaia profile under Windows?
I have git but what is needed for the make build?
Well, of course at least a make command, which windows normally does not have.
So is there a toolchain available for windows to build a gaia profile?
July 25, 2012 at 10:08 pm
There is a discussion thread started about building on windows. it’s much more complicated, and i personally have not tried. Please give it a spin and let us know how it goes!
https://groups.google.com/d/topic/mozilla.dev.b2g/ALhvaLP-WtA/discussion
July 26, 2012 at 1:14 pm
some more instructions to load it into some mobile and test it would save the day.
July 27, 2012 at 1:45 am
I get only a little black window for a while, then it closes itself and i get these:
Opened socket on 4242
======================= webapi.js =======================
MOZSETTINGS-GET-WARNING: language.current is not in the database. Please add it to build/settings.js
======================= webapi.js =======================
###################################### forms.js loaded
MOZSETTINGS-GET-WARNING: ril.data.enabled is not in the database. Please add it to build/settings.js
MOZSETTINGS-GET-WARNING: ril.data.roaming.enabled is not in the database. Please add it to build/settings.js
###################################### forms.js loaded
MOZSETTINGS-GET-WARNING: ril.data.apn is not in the database. Please add it to build/settings.js
/home/sonikmh/Stažené/b2g/b2g: symbol lookup error: /home/sonikmh/Stažené/b2g/libxul.so: undefined symbol: gdk_visual_get_depth
sonikmh@elanor:~/gaia$ /home/sonikmh/Stažené/b2g/b2g|firefox -profile /home/sonikmh/gaia/profile/
/home/sonikmh/Stažené/b2g/b2g: symbol lookup error: /home/sonikmh/Stažené/b2g/libxul.so: undefined symbol: gdk_window_get_display
sonikmh@elanor:~/gaia$ /home/sonikmh/Stažené/b2g/b2g|firefox -profile /home/sonikmh/gaia/profile/
/home/sonikmh/Stažené/b2g/b2g: symbol lookup error: /home/sonikmh/Stažené/b2g/libxul.so: undefined symbol: gdk_window_get_display
sonikmh@elanor:~/gaia$ /home/sonikmh/Stažené/b2g/b2g|firefox -profile /home/sonikmh/gaia/profile/
/home/sonikmh/Stažené/b2g/b2g: symbol lookup error: /home/sonikmh/Stažené/b2g/libxul.so: undefined symbol: gdk_window_get_display
sonikmh@elanor:~/gaia$ /home/sonikmh/Stažené/b2g/b2g|firefox -profile /home/sonikmh/gaia/profile/
/home/sonikmh/Stažené/b2g/b2g: symbol lookup error: /home/sonikmh/Stažené/b2g/libxul.so: undefined symbol: gdk_window_get_display
Any ideas please?
July 28, 2012 at 9:02 pm
Try again after tomorrow’s build. https://github.com/mozilla-b2g/gaia/pull/2930 fixes an issue that sounds similar to your report.
August 14, 2012 at 9:36 pm
I was unable to get this to work on 64-bt openSUSE. Is there a 64-bit solution?
August 21, 2012 at 2:56 pm
Will this work on my Atom based netbook? Thanks a lot. I am really eager to download and try it.
February 7, 2013 at 7:39 am
Hi,
I have setup the Firefox OS emulator following your instructions, but when I tri to execute
./b2g -profile /home/gilsimjo/gaia/profile
Under my b2g setup folder I get the next error:
bash: ./b2g: unable to execute the binary file.
I have setup FirefoxOS in a 32 bits ubuntu 12.04 machine.
Can anybody help me please?
February 28, 2013 at 7:51 am
Desktop build? Does this mean I can eventually stop using Windows on my PC and have a Firefox OS for my PC, or will the Firefox OS only ever be for mobiles?