diff --git a/.bazelrc b/.bazelrc
new file mode 100644
index 0000000..9085af9
--- /dev/null
+++ b/.bazelrc
@@ -0,0 +1,8 @@
+build:fuchsia_x64 --crosstool_top=@fuchsia_crosstool//:toolchain
+build:fuchsia_x64 --cpu=x86_64
+build:fuchsia_x64 --host_crosstool_top=@bazel_tools//tools/cpp:toolchain
+
+build:fuchsia_arm64 --crosstool_top=@fuchsia_crosstool//:toolchain
+build:fuchsia_arm64 --cpu=aarch64
+build:fuchsia_arm64 --host_crosstool_top=@bazel_tools//tools/cpp:toolchain
+
diff --git a/.gitignore b/.gitignore
index 9694afe..63d1bec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,11 +17,21 @@
 #   Test logs
 #
 bazel-*
-bazel
+
+# fuchsia sdk downloaded manually by the user (see README.md)
+sdk
+
+# compiledb information for IDE integration
+**/.cache/clangd
+compile_commands.json
+
+# symlinks created by scripts/bootstrap.sh
+tools/bazel
+tools/ffx
 
 # Files created by IntelliJ IDE.
 .idea
 iwlwifi.iml
 
 # Files created by VSCode.
-.vscode
\ No newline at end of file
+.vscode
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..61c63b7
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "sdk-integration"]
+	path = sdk-integration
+	url = https://fuchsia.googlesource.com/sdk-integration
+[submodule "third_party/mako"]
+	path = third_party/mako
+	url = https://fuchsia.googlesource.com/third_party/mako
diff --git a/README.md b/README.md
index 8b90b74..6861b5e 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,104 @@
-Fuchsia Open Source Template Repository
-=======================================
+# Intel Wifi driver
 
-This repository is a template that we will use when creating new open source
-repositories for Fuchsia.
+This repository contains instructions and source code to build, package and run
+the Intel Wifi driver for Fuchsia using the Fuchsia Bazel SDK.
+
+## Prepare your environment
+
+### Create the SDK and emulator images
+
+You will need the SDK with the driver development tools and libraries.
+Currently this is produced manually in the Fuchsia tree. You can reproduce
+them with one build for qemu.x64 with the SDK archives:
+
+``` bash
+fx --dir=out/qemu set core.qemu-x64 --args=build_sdk_archives=true \
+  --args='dev_bootfs_labels=["//products/kernel_cmdline:devmgr.enable-ephemeral--true"]'
+
+fx build :default sdk sdk:ddk
+```
+
+And a different build is currently required for creating the product bundle:
+
+``` bash
+fx --dir=out/qemupbm set core.qemu-x64 \
+  --args='dev_bootfs_labels=["//products/kernel_cmdline:devmgr.enable-ephemeral--true"]'
+
+fx build :default sdk
+```
+
+
+## Bootstrap your development environment
+
+> **This is not yet a complete nor maintained Bazel integration, and it is not
+> guaranteed to work beyond the samples in this repository**. It is also not the
+> final developer experience and should not be mirrored in another repository as
+> it will change quite often until it settles.
+
+
+```
+scripts/bootstrap.sh \
+  --sdk-local ~/fuchsia/out/qemu
+  --product-bundle-local ~/fuchsia/out/qemupbm
+```
+
+Adjust the paths above accordingly.
+
+Repeat the step above whenever you want to use a new version of the SDK/DDK and
+emulator images. It is harmless to execute it repeatedly.
+
+
+### Start an emulator
+
+```
+tools/ffx emu start --net tap -H
+```
+
+Let the emulator know where are the system packages for on-demand loading:
+
+```
+tools/ffx repository add-from-pm sdk/amber-files 
+tools/ffx target repository register --alias fuchsia.com --repository devhost
+```
+
+TODO(fxbug.dev/92055): the emulator should register the sdk packages
+automatically. Manual add-from-pm and target repository register should not be
+needed.
+
+
+## Build and package the driver
+
+1. Build the driver:
+
+  ```
+  tools/bazel build --config=fuchsia_x64 third_party/iwlwifi:core
+  ```
+
+  This command will build the driver and make it available as a package on a local Fuchsia repository.
+
+2. Register the package repository
+
+  ```
+  tools/ffx repository add-from-pm -r iwlwifi_driver_repo bazel-out/x86_64-fastbuild/bin/third_party/iwlwifi/iwlwifi_driver_repo
+  tools/ffx target repository register -r iwlwifi_driver_repo
+  ```
+
+  TODO(fxbug.dev/92052): ffx does not play nice with the repository created by
+  Bazel, probably because Bazel removes the write permission so that external
+  players don't break the hermeciticy of the build. As a consequence, ffx
+  requires 'add-from-pm' and 'target repository register' every time a new
+  package is published.
+
+3. (optional) watch the device log in a separate window
+
+  ```
+  tools/ffx log
+  ```
+
+4. Load the driver
+
+  Now you are ready to register the driver.
+
+  ```
+  tools/ffx driver register fuchsia-pkg://iwlwifi_driver_repo/iwlwifi#lib/libcore.so
+  ```
diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel
new file mode 100644
index 0000000..7a9b345
--- /dev/null
+++ b/WORKSPACE.bazel
@@ -0,0 +1,37 @@
+# Copyright 2021 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+local_repository(
+    name = "fuchsia_sdk",
+    path = "bazel-rules",
+)
+
+load("@fuchsia_sdk//build_defs:fuchsia_setup.bzl", "fuchsia_setup")
+fuchsia_setup(
+    with_toolchain = True,
+)
+
+# Setup the rules imported from workstation. Eventually we should use only one set of rules.
+local_repository(
+    name = "rules_fuchsia",
+    path = "sdk-integration/bazel_rules_fuchsia",
+)
+
+load("@rules_fuchsia//fuchsia:deps.bzl", "rules_fuchsia_deps")
+rules_fuchsia_deps()
+
+
+load(
+    "@rules_fuchsia//fuchsia:deps.bzl",
+    "fuchsia_sdk_repository",
+)
+fuchsia_sdk_repository(
+    name = "fuchsia_sdk_from_workstation",
+    sha256 = {
+        "linux": "ffe0d1c48ddc300383f5b645ee0bd79229feccfd5f6c205e112fec2cf976be86",
+        "mac": "4c93c6a530354747d3de18804d420b2ed455f6dc943421b1497200331d5ab4cc",
+    },
+    cipd_tag = "version:6.20211029.2.1",
+)
+register_toolchains("@fuchsia_sdk_from_workstation//:fuchsia_toolchain_sdk")
diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh
index b9417ee..9cb6d94 100755
--- a/scripts/bootstrap.sh
+++ b/scripts/bootstrap.sh
@@ -9,7 +9,7 @@
 # This script is used to fetch the prebuilt that is needed by driver build.
 
 readonly REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/..
-readonly BAZELISK_TOOL="${REPO_ROOT}/bazel"
+readonly BAZELISK_TOOL="${REPO_ROOT}/tools/bazel"
 
 function get_os {
   uname -s | tr '[:upper:]' '[:lower:]'
@@ -28,17 +28,161 @@
   echo "$ARCH"
 }
 
+create_symlink() {
+  local TOOL
+  TOOL="$1"
+  SYMLINK="$2"
+  mkdir -p "$(dirname "${SYMLINK}")"
+  ln -f -s "${TOOL}" "${SYMLINK}"
+}
+
 create_bazel_symlink() {
   local BAZELISK_BIN="${REPO_ROOT}/vendor/bazelisk/bazelisk-$(get_os)-$(get_arch)"
   if [[ ! -x "${BAZELISK_BIN}" ]]; then
      >&2 echo "Bazel wrapper not supported in this OS/architecture. Could not find executable: ${BAZELISK_BIN}"
      exit 1
   fi
-  ln -f -s "${BAZELISK_BIN}" "${BAZELISK_TOOL}"
+  create_symlink "$BAZELISK_BIN" "$BAZELISK_TOOL"
+}
+
+create_tools_symlinks() {
+  create_symlink "${REPO_ROOT}/bazel-iwlwifi/external/fuchsia_sdk/tools/x64/ffx" ${REPO_ROOT}/tools/ffx
+}
+
+# TODO: this is probably not needed when the DDK becomes part of the core SDK.
+update_sdk_from_archive() {
+  SDK_ARCHIVE="$1"
+  if [[ ! -f "$SDK_ARCHIVE" ]]; then
+    echo "ERROR: sdk archive cannot be found: $SDK_ARCHIVE"
+    exit 1
+  fi
+  mkdir -p sdk
+  echo "Extracting SDK from archive..."
+  tar xzf "$SDK_ARCHIVE" -C sdk
+  echo "Done extracting SDK from archive."
+}
+
+
+# TODO: this is probably not needed when the DDK becomes part of the core SDK.
+update_sdk_from_local_build() {
+  SDK_OUT="$1"
+  PBM_OUT="$2"
+  if [[ ! -d "$SDK_OUT" ]]; then
+    echo "ERROR: cannot find a directory in $SDK_OUT"
+    exit 1
+  fi
+  if [[ ! -d "$PBM_OUT" ]]; then
+    echo "ERROR: cannot find a directory in $PBM_OUT"
+    exit 1
+  fi
+
+  PBM_FILES=(
+      $PBM_OUT/./gen/build/images/virtual_device.json
+      $PBM_OUT/./gen/build/images/emulator_flags.json.template
+      $PBM_OUT/./gen/build/images/product_bundle.json
+      $PBM_OUT/./obj/build/images/fuchsia/fuchsia/fvm.blk
+      $PBM_OUT/./multiboot.bin
+      $PBM_OUT/./fuchsia.zbi
+      $SDK_OUT/./amber-files
+  )
+  SDK_ARCHIVE="${SDK_OUT}/sdk/archive/core.tar.gz"
+  DDK_ARCHIVE="${SDK_OUT}/sdk/archive/ddk.tar.gz"
+  if [[ ! -f "$SDK_ARCHIVE" ]]; then
+    echo "ERROR: cannot find the core SDK archive, make sure your 'fx set' has"
+    echo "       '--args=build_sdk_archives=true' and that you build"
+    echo "       'fx build :default sdk sdk:ddk': $SDK_ARCHIVE"
+    exit 1
+  fi
+  if [[ ! -f "$DDK_ARCHIVE" ]]; then
+    echo "ERROR: cannot find the DDK archive, make sure your 'fx set' has"
+    echo "       '--args=build_sdk_archives=true' and that you build"
+    echo "       'fx build :default sdk sdk:ddk': $DDK_ARCHIVE"
+    exit 1
+  fi
+
+  for f in "${PBM_FILES[@]}"; do
+    if [[ ! -e "$f" ]]; then
+      echo "ERROR: cannot find file needed to run the emulator. Make sure your"
+      echo "       'fx set' does NOT have '--args=build_sdk_archives=true'"
+      echo "       and that you build with 'fx build :default sdk': $f"
+      exit 1
+    fi
+  done
+
+  LOCAL_SDK_OUT=./sdk
+  if [[ -d "$LOCAL_SDK_OUT" ]]; then
+    echo "Removing old SDK in $LOCAL_SDK_OUT"
+    rm -Rf "${LOCAL_SDK_OUT}"
+  fi
+  echo "Syncing SDK from local build..."
+  mkdir "${LOCAL_SDK_OUT}"
+  tar xzf "${SDK_OUT}/sdk/archive/core.tar.gz" -C "${LOCAL_SDK_OUT}"
+  tar xzf "${SDK_OUT}/sdk/archive/ddk.tar.gz" -C "${LOCAL_SDK_OUT}" --transform='s/meta\/manifest.json/meta\/ddk_manifest.json/'
+  rsync -aR "${PBM_FILES[@]}" "${LOCAL_SDK_OUT}"
+}
+
+generate_rules_fuchsia() {
+  echo "Generating Fuchsia Bazel rules..."
+  if [[ ! -d "${REPO_ROOT}/sdk" ]]; then
+    echo "Warning! Cannot find directory 'sdk', please use argument --sdk-archive or --sdk-local and --product-bundle-local"
+    echo "Bazel rules will not be generated for the Fuchsia SDK. Please run bootstrap.sh again with the proper argument."
+    return
+    # TODO(mangini) exit on error here. Disabling error for now to avoid
+    # triggering CI/CQ, since we cannot run this in CI/CQ until the DDK is
+    # published in an accessible place.
+    # exit 1
+  fi
+  pushd "${REPO_ROOT}/sdk-integration/bazel_rules_generator/" > /dev/null || exit
+  ./generate.py \
+    --directory "${REPO_ROOT}/sdk" \
+    --output "${REPO_ROOT}/bazel-rules"
+  popd > /dev/null || exit
+  echo "Done generating Fuchsia Bazel rules."
+}
+
+
+syntax() {
+    echo "   $(basename $0)"
+    echo "      assume that there is a directory 'sdk' with an SDK, DDK and"
+    echo "      product bundle files for the emulator"
+    echo
+    echo "   $(basename $0) --sdk-archive SDK_TARGZ"
+    echo "      load an SDK and the emulator product bundle files from the"
+    echo "      given tar.gz archive."
+    echo
+    echo "   $(basename $0) --sdk-local FUCHSIA_OUT_SDK --product-bundle-local FUCHSIA_OUT_PRODUCT_BUNDLE"
+    echo "      copy the SDK from a build directory of a local Fuchsia tree,"
+    echo "      and copy the product bundle files for the emulator from another"
+    echo "      build directory."
+}
+
+
+update_git_submodules() {
+  echo "Updating git submodules"
+  git submodule update --init --recursive
 }
 
 main() {
+
+  update_git_submodules
+
+  if [[ $# -gt 0 ]]; then
+    if [[ "$1" == "--sdk-archive" && $# -eq 2 ]]; then
+      update_sdk_from_archive "$2"
+    elif [[ $# -eq 4 && "$1" == "--sdk-local" && "$3" == "--product-bundle-local" ]]; then
+      update_sdk_from_local_build $2 $4
+    elif [[ $# -eq 4 && "$3" == "--sdk-local" && "$1" == "--product-bundle-local" ]]; then
+      update_sdk_from_local_build $4 $2
+    else
+      echo "Invalid syntax."
+      syntax
+      exit 1
+    fi
+  fi
+
   create_bazel_symlink
+  create_tools_symlinks
+  generate_rules_fuchsia
 }
 
 main "$@"
diff --git a/scripts/build.sh b/scripts/build.sh
index 24179cd..d80dc10 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -10,11 +10,20 @@
 # can pass.
 
 readonly REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/..
-readonly BAZELISK_TOOL="${REPO_ROOT}/bazel"
+readonly BAZELISK_TOOL="${REPO_ROOT}/tools/bazel"
 
 main() {
-  "$BAZELISK_TOOL" --version
-  echo "Everything build and all tests passed."
+  if [[ -d "${REPO_ROOT}/sdk" ]]; then
+    "$BAZELISK_TOOL" build --config=fuchsia_x64 third_party/iwlwifi:core
+    echo "Everything build and all tests passed."
+  else
+    # TODO(mangini): handle this appropriately when the DDK is published by
+    # infra in an accessible way. We need to keep this fallback state to avoid
+    # triggering CI/CQ since the build bot cannot build the driver until it has
+    # access to a valid DDK.
+    "$BAZELISK_TOOL" --version
+    echo "Not building now since the DDK is not available. Please re-run scripts/bootstrap.sh with the appropriate flag to generate the Blaze build rules."
+  fi
 }
 
 main "$@"
diff --git a/sdk-integration b/sdk-integration
new file mode 160000
index 0000000..bfda1ec
--- /dev/null
+++ b/sdk-integration
@@ -0,0 +1 @@
+Subproject commit bfda1ec54b53eb776ef977f815722e4e2ecf75c8
diff --git a/third_party/iwlwifi/BUILD.bazel b/third_party/iwlwifi/BUILD.bazel
index 16895c1..3d258ba 100644
--- a/third_party/iwlwifi/BUILD.bazel
+++ b/third_party/iwlwifi/BUILD.bazel
@@ -45,3 +45,4 @@
 #        "//zircon/system/public",
     ],
 )
+
diff --git a/third_party/iwlwifi/platform/BUILD.bazel b/third_party/iwlwifi/platform/BUILD.bazel
index 14b6185..bffbd52 100644
--- a/third_party/iwlwifi/platform/BUILD.bazel
+++ b/third_party/iwlwifi/platform/BUILD.bazel
@@ -1,13 +1,23 @@
 
 package(default_visibility = ["//visibility:public"])
 
-#driver_bind_rules(
-#    name = "iwlwifi_driver_bind",
-#    rules = "iwlwifi.bind",
-#    output_header = "iwlwifi_bind.h",
+load("@fuchsia_sdk//build_defs:driver_bind_rules.bzl", "driver_header_bind_rules", "driver_bytecode_bind_rules")
 
-#    deps = ["@fuchsia_sdk//bind/fuchsia_usb"],
-#)
+driver_header_bind_rules(
+    name = "iwlwifi_driver_bind_header",
+    rules = "iwlwifi.bind",
+    output = "iwlwifi_bind.h",
+
+    deps = ["@fuchsia_sdk//bind/fuchsia_usb"],
+)
+
+driver_bytecode_bind_rules(
+    name = "iwlwifi_driver_bind_bytecode",
+    rules = "iwlwifi.bind",
+    output = "iwlwifi_bind.bc",
+
+    deps = ["@fuchsia_sdk//bind/fuchsia_usb"],
+)
 
 cc_library(
     name = "driver_inspector",
diff --git a/third_party/mako b/third_party/mako
new file mode 160000
index 0000000..c374704
--- /dev/null
+++ b/third_party/mako
@@ -0,0 +1 @@
+Subproject commit c37470481fccb86c2ede492cbbbabba2b6c238a1
