diff --git a/buildbot/cbuildbot_commands.py b/buildbot/cbuildbot_commands.py
index 6c4097b..6722181 100644
--- a/buildbot/cbuildbot_commands.py
+++ b/buildbot/cbuildbot_commands.py
@@ -895,6 +895,23 @@
                       cwd=scripts_dir)
 
 
+def BuildTarball(buildroot, input_list, tarball_output, cwd=None):
+  """Tars files and directories from input_list to tarball_output.
+
+  Args:
+    buildroot: Root directory where build occurs.
+    input_list: A list of files and directories to be archived.
+    tarball_output: Path of output tar archive file.
+    cwd: Current working directory when tar command is executed.
+  """
+  pbzip2 = os.path.join(buildroot, 'chroot', 'usr', 'bin', 'pbzip2')
+  cmd = ['tar',
+         '--use-compress-program=%s' % pbzip2,
+         '-cf', tarball_output]
+  cmd += input_list
+  cros_lib.RunCommand(cmd, cwd=cwd)
+
+
 def BuildAutotestTarball(buildroot, board, image_dir):
   """Tar up the autotest artifacts into image_dir.
 
@@ -936,6 +953,31 @@
   return filename
 
 
+def BuildFirmwareArchive(buildroot, board, archive_dir):
+  """Build firmware_from_source.tar.bz2 in archive_dir from build root.
+
+  Args:
+    buildroot: Root directory where build occurs.
+    board: Board name of build target.
+    archive_dir: Directory to store output file.
+
+  Returns the basename of the archived file, or None if the target board does
+  not have firmware from source.
+  """
+  files = ['image.bin', 'ec.bin']
+  firmware_root = os.path.join(buildroot, 'chroot', 'build', board, 'firmware')
+  source_list = [image_file
+                 for image_file in files
+                 if os.path.exists(os.path.join(firmware_root, image_file))]
+  if not source_list:
+    return None
+
+  archive_name = 'firmware_from_source.tar.bz2'
+  archive_file = os.path.join(archive_dir, archive_name)
+  BuildTarball(buildroot, source_list, archive_file, cwd=firmware_root)
+  return archive_name
+
+
 def BuildFactoryZip(archive_dir, image_root):
   """Build factory_image.zip in archive_dir.
 
diff --git a/buildbot/cbuildbot_stages.py b/buildbot/cbuildbot_stages.py
index 5c0d5be..99839f0 100644
--- a/buildbot/cbuildbot_stages.py
+++ b/buildbot/cbuildbot_stages.py
@@ -852,11 +852,12 @@
     if config['useflags']:
       extra_env['USE'] = ' '.join(config['useflags'])
 
-    # The following three functions are run in parallel.
+    # The following functions are run in parallel.
     #  1. UploadUpdatePayloads: Upload update payloads from test phase.
     #  2. UploadTestResults: Upload results from test phase.
     #  3. ArchiveDebugSymbols: Generate and upload debug symbols.
     #  4. BuildAndArchiveAllImages: Build and archive images.
+    #  5. BuildFirmwareImages: Build and archive firmware image.
 
     def UploadUpdatePayloads():
       """Uploads update payloads when ready."""
@@ -953,6 +954,12 @@
       shutil.copy(os.path.join(image_dir, filename), archive_path)
       commands.UploadArchivedFile(archive_path, upload_url, filename, debug)
 
+    def ArchiveFirmwareImages():
+      """Archive firmware images built from source if available."""
+      filename = commands.BuildFirmwareArchive(buildroot, board, archive_path)
+      if filename:
+        commands.UploadArchivedFile(archive_path, upload_url, filename, debug)
+
     def BuildAndArchiveAllImages():
       # If we're an official build, generate the recovery image. To conserve
       # loop devices, we try to only run one instance of build_image at a
@@ -968,7 +975,8 @@
       UploadUpdatePayloads,
       UploadTestResults,
       ArchiveDebugSymbols,
-      BuildAndArchiveAllImages])
+      BuildAndArchiveAllImages,
+      ArchiveFirmwareImages])
 
     # Update and upload LATEST file.
     commands.UpdateLatestFile(self._bot_archive_root, self._set_version)
