Update Pigweed to 9264e686 (#23279)

* Update Pigweed to 9264e686

* Disable NRF pw tokenized tracing in RPC build

This is failing to build after the pigweed roll, disable for now and we
can fix it after we get this update done.

* Fix broken github CI workflows

Increase EFR32 time, and rm out after efr and  Imx builds,
which was running out of space.
diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml
index 8d48403..b5b533a 100644
--- a/.github/workflows/examples-efr32.yaml
+++ b/.github/workflows/examples-efr32.yaml
@@ -96,6 +96,8 @@
              efr32 BRD4187C window-app \
              out/efr32-brd4187c-window-covering/chip-efr32-window-example.out \
              /tmp/bloat_reports/
+      - name: Clean out build output
+        run: rm -rf ./out
       - name: Build example EFR32 Lighting App for BRD4161A with RPCs
         timeout-minutes: 15
         run: |
@@ -103,18 +105,24 @@
             disable_lcd=true 'import("//with_pw_rpc.gni")'
           .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+rpc lighting-app \
             out/lighting_app_debug_rpc/BRD4161A/chip-efr32-lighting-example.out /tmp/bloat_reports/
+      - name: Clean out build output
+        run: rm -rf ./out
       - name: Build example EFR32+WF200 WiFi Lock app for BRD4161A
         timeout-minutes: 15
         run: |
           scripts/examples/gn_efr32_example.sh examples/lock-app/efr32/ out/lock_app_wifi_wf200 BRD4161A is_debug=false --wifi wf200
           .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+wf200 lock-app \
             out/lock_app_wifi_wf200/BRD4161A/chip-efr32-lock-example.out /tmp/bloat_reports/
+      - name: Clean out build output
+        run: rm -rf ./out
       - name: Build example EFR32+RS911x WiFi Lighting app for BRD4161A
         timeout-minutes: 15
         run: |
           scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/lighting_app_wifi_rs911x BRD4161A --wifi rs911x
           .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py efr32 BRD4161A+rs911x lighting-app \
             out/lighting_app_wifi_rs911x/BRD4161A/chip-efr32-lighting-example.out /tmp/bloat_reports/
+      - name: Clean out build output
+        run: rm -rf ./out
       - name: Uploading Size Reports
         uses: actions/upload-artifact@v3
         if: ${{ !env.ACT }}
diff --git a/.github/workflows/examples-linux-imx.yaml b/.github/workflows/examples-linux-imx.yaml
index 2c94f6b..dbae52a 100644
--- a/.github/workflows/examples-linux-imx.yaml
+++ b/.github/workflows/examples-linux-imx.yaml
@@ -50,11 +50,15 @@
               run: |
                   ./scripts/examples/imxlinux_example.sh \
                   examples/lighting-app/linux/ examples/lighting-app/linux/out/aarch64
+            - name: Clean out build output
+              run: rm -rf ./out
             - name: Build chip-tool
               timeout-minutes: 30
               run: |
                   ./scripts/examples/imxlinux_example.sh \
                   examples/chip-tool examples/chip-tool/out/aarch64
+            - name: Clean out build output
+              run: rm -rf ./out
             - name: Build thermostat
               timeout-minutes: 30
               run: |
@@ -62,6 +66,8 @@
                      "./scripts/build/build_examples.py \
                         --target imx-thermostat build \
                      "
+            - name: Clean out build output
+              run: rm -rf ./out
             - name: Build all-cluster
               timeout-minutes: 30
               run: |
@@ -69,6 +75,8 @@
                      "./scripts/build/build_examples.py \
                          --target imx-all-clusters-app build \
                      "
+            - name: Clean out build output
+              run: rm -rf ./out
             - name: Build all-cluster-minimal
               timeout-minutes: 30
               run: |
@@ -76,6 +84,8 @@
                      "./scripts/build/build_examples.py \
                          --target imx-all-clusters-minimal-app build \
                      "
+            - name: Clean out build output
+              run: rm -rf ./out
             - name: Build ota-provider-app
               timeout-minutes: 30
               run: |
@@ -83,3 +93,5 @@
                      "./scripts/build/build_examples.py \
                          --target imx-ota-provider-app build
                      "
+            - name: Clean out build output
+              run: rm -rf ./out
diff --git a/.gn b/.gn
index 5da05d8..9577b6d 100644
--- a/.gn
+++ b/.gn
@@ -29,9 +29,6 @@
   pw_build_PIP_CONSTRAINTS = [ "//scripts/constraints.txt" ]
   pw_build_PIP_REQUIREMENTS = [ "//scripts/requirements.txt" ]
 
-  # Use the new Python build and merged 'pigweed' Python package.
-  pw_build_USE_NEW_PYTHON_BUILD = true
-
   # GN target to use for the default Python build venv.
   pw_build_PYTHON_BUILD_VENV = "//:matter_build_venv"
 }
diff --git a/BUILD.gn b/BUILD.gn
index e21616f..e4e1b8e 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -103,7 +103,7 @@
     "$dir_pw_watch/py",
   ]
 
-  # Matter's in-tree pw_python_package or pw_create_python_source_tree targets.
+  # Matter's in-tree pw_python_package or pw_python_distribution targets.
   _matter_python_packages = [
     "//integrations/mobly:chip_mobly",
     "//examples/chef",
@@ -119,7 +119,7 @@
     source_packages = _matter_python_packages + _pigweed_python_packages
   }
 
-  pw_internal_pip_install("pip_install_matter_packages") {
+  pw_python_pip_install("pip_install_matter_packages") {
     packages = [ "//examples/common/pigweed/rpc_console:chip_rpc_distribution" ]
   }
 
@@ -133,7 +133,7 @@
   }
 
   # These pw_python_package targets will be installed using 'pip install --editable'
-  pw_internal_pip_install("pip_install_editable_matter_packages") {
+  pw_python_pip_install("pip_install_editable_matter_packages") {
     packages = [
       "//integrations/mobly:chip_mobly",
       "//examples/chef",
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 7676c1c..96cdcd0 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -194,9 +194,8 @@
 config("disabled_warnings") {
   cflags = [
     "-Wno-deprecated-declarations",
-    "-Wno-unknown-warning-option",
-    "-Wno-maybe-uninitialized",
     "-Wno-missing-field-initializers",
+    "-Wno-unknown-warning-option",
     "-Wno-unused-parameter",
   ]
   if (!is_debug) {
@@ -205,8 +204,9 @@
   }
   if (!is_clang) {
     cflags += [
-      "-Wno-psabi",
       "-Wno-cast-function-type",
+      "-Wno-psabi",
+      "-Wno-maybe-uninitialized",
     ]
   }
 }
@@ -291,9 +291,12 @@
   cflags = [
     "-Wno-unused",
     "-Wno-format",
-    "-Wno-maybe-uninitialized",
     "-Wno-address",
   ]
+
+  if (!is_clang) {
+    cflags += [ "-Wno-maybe-uninitialized" ]
+  }
 }
 
 config("warnings_third_party") {
diff --git a/build/config/mac/mac_sdk.gni b/build/config/mac/mac_sdk.gni
index 9f3380e..0e7f02b 100644
--- a/build/config/mac/mac_sdk.gni
+++ b/build/config/mac/mac_sdk.gni
@@ -28,7 +28,7 @@
   target_sdk = current_os
 }
 
-deployment_target = "10.15"
+deployment_target = "11.0"
 if (current_os == "mac") {
   if (current_cpu == "arm64") {
     deployment_target = "11.0"
diff --git a/config/ameba/args.gni b/config/ameba/args.gni
index d09b1f5..7d3d91a 100755
--- a/config/ameba/args.gni
+++ b/config/ameba/args.gni
@@ -16,7 +16,6 @@
 # options are used from examples/.
 
 import("//build_overrides/pigweed.gni")
-import("$dir_pw_span/polyfill.gni")
 
 chip_device_platform = "ameba"
 
@@ -38,5 +37,4 @@
 
 pw_build_PIP_CONSTRAINTS =
     [ "//third_party/connectedhomeip/scripts/constraints.txt" ]
-pw_span_ENABLE_STD_SPAN_POLYFILL = false
 cpp_standard = "c++17"
diff --git a/config/bouffalolab/common/lib/pw_rpc/pw_rpc.gni b/config/bouffalolab/common/lib/pw_rpc/pw_rpc.gni
index c8300fa..2cfbc03 100644
--- a/config/bouffalolab/common/lib/pw_rpc/pw_rpc.gni
+++ b/config/bouffalolab/common/lib/pw_rpc/pw_rpc.gni
@@ -19,7 +19,6 @@
 pw_assert_BACKEND = "$dir_pw_assert_log"
 pw_sys_io_BACKEND =
     "${chip_root}/examples/platform/bouffalolab/common/rpc/pw_sys_io:pw_sys_io"
-pw_span_ENABLE_STD_SPAN_POLYFILL = false
 
 pw_string_CONFIG =
     "${chip_root}/config/bouffalolab/common/lib/pw_rpc:pw_string_dep"
diff --git a/config/efr32/lib/pw_rpc/pw_rpc.gni b/config/efr32/lib/pw_rpc/pw_rpc.gni
index 2c8aaf4..68f1c61 100644
--- a/config/efr32/lib/pw_rpc/pw_rpc.gni
+++ b/config/efr32/lib/pw_rpc/pw_rpc.gni
@@ -19,7 +19,6 @@
 pw_assert_BACKEND = "$dir_pw_assert_log:check_backend"
 pw_sys_io_BACKEND =
     "${chip_root}/examples/platform/efr32/pw_sys_io:pw_sys_io_efr32"
-pw_span_ENABLE_STD_SPAN_POLYFILL = false
 
 pw_build_LINK_DEPS = [
   "$dir_pw_assert:impl",
diff --git a/config/esp32/.gn b/config/esp32/.gn
index 2cb77a0..4b3520a 100644
--- a/config/esp32/.gn
+++ b/config/esp32/.gn
@@ -24,5 +24,10 @@
   target_cpu = "esp32"
   target_os = "freertos"
 
+  pw_build_PIP_CONSTRAINTS =
+      [ "//third_party/connectedhomeip/scripts/constraints.txt" ]
+  pw_build_PIP_REQUIREMENTS =
+      [ "//third_party/connectedhomeip/scripts/requirements.txt" ]
+
   import("//args.gni")
 }
diff --git a/config/esp32/args.gni b/config/esp32/args.gni
index 1f6a6bf..939c39e 100644
--- a/config/esp32/args.gni
+++ b/config/esp32/args.gni
@@ -15,7 +15,6 @@
 # Options from standalone-chip.mk that differ from configure defaults. These
 # options are used from examples/.
 import("//build_overrides/pigweed.gni")
-import("$dir_pw_span/polyfill.gni")
 chip_device_platform = "esp32"
 
 chip_project_config_include = ""
@@ -39,4 +38,3 @@
 # whatever pigweed ships with
 pw_build_PIP_CONSTRAINTS =
     [ "//third_party/connectedhomeip/scripts/constraints.txt" ]
-pw_span_ENABLE_STD_SPAN_POLYFILL = false
diff --git a/config/mbed/CMakeLists.txt b/config/mbed/CMakeLists.txt
index 1829bf8..ecef938 100644
--- a/config/mbed/CMakeLists.txt
+++ b/config/mbed/CMakeLists.txt
@@ -395,6 +395,7 @@
                     ${PIGWEED_ROOT}/pw_log_basic/public_overrides
                     ${PIGWEED_ROOT}/pw_span/public_overrides
                     ${PIGWEED_ROOT}/pw_span/public
+                    ${PIGWEED_ROOT}/pw_string/public
                     ${PIGWEED_ROOT}/pw_sync/public
                     ${PIGWEED_ROOT}/pw_polyfill/public
                     ${PIGWEED_ROOT}/pw_polyfill/standard_library_public
@@ -410,6 +411,8 @@
                     ${PIGWEED_ROOT}/pw_function/public
                     ${PIGWEED_ROOT}/pw_preprocessor/public
                     ${PIGWEED_ROOT}/pw_rpc/system_server/public
+                    ${PIGWEED_ROOT}/third_party/fuchsia/repo/sdk/lib/fit/include
+                    ${PIGWEED_ROOT}/third_party/fuchsia/repo/sdk/lib/stdcompat/include
                     ${CHIP_ROOT}/third_party/nanopb/repo
 
                     ${CHIP_ROOT}/examples/common
diff --git a/config/mbed/chip-gn/lib/pw_rpc/pw_rpc.gni b/config/mbed/chip-gn/lib/pw_rpc/pw_rpc.gni
index b2033e5..2b03f6b 100644
--- a/config/mbed/chip-gn/lib/pw_rpc/pw_rpc.gni
+++ b/config/mbed/chip-gn/lib/pw_rpc/pw_rpc.gni
@@ -21,7 +21,6 @@
     "${chip_root}/examples/platform/mbed/pw_sys_io:pw_sys_io_mbed"
 pw_rpc_system_server_BACKEND =
     "${chip_root}/examples/common/pigweed:system_rpc_server"
-pw_span_ENABLE_STD_SPAN_POLYFILL = false
 
 pw_build_LINK_DEPS = [
   "$dir_pw_assert:impl",
diff --git a/config/nrfconnect/chip-module/CMakeLists.txt b/config/nrfconnect/chip-module/CMakeLists.txt
index c27f4bf..68e0e31 100644
--- a/config/nrfconnect/chip-module/CMakeLists.txt
+++ b/config/nrfconnect/chip-module/CMakeLists.txt
@@ -266,8 +266,6 @@
 
 if (CONFIG_CHIP_PW_RPC)
     set(PIGWEED_DIR "//third_party/pigweed/repo")
-    chip_gn_arg_bool("chip_build_pw_trace_lib" "true")
-    chip_gn_arg_string("pw_trace_BACKEND" ${PIGWEED_DIR}/pw_trace_tokenized)
     chip_gn_arg_string("pw_assert_BACKEND" ${PIGWEED_DIR}/pw_assert_log:check_backend)
     chip_gn_arg_string("pw_log_BACKEND" ${PIGWEED_DIR}/pw_log_basic)
     chip_gn_arg("pw_build_LINK_DEPS" [\"${PIGWEED_DIR}/pw_assert:impl\",\ \"${PIGWEED_DIR}/pw_log:impl\"])
diff --git a/config/qpg/lib/pw_rpc/pw_rpc.gni b/config/qpg/lib/pw_rpc/pw_rpc.gni
index 4100605..60fb93e 100644
--- a/config/qpg/lib/pw_rpc/pw_rpc.gni
+++ b/config/qpg/lib/pw_rpc/pw_rpc.gni
@@ -18,7 +18,6 @@
 pw_log_BACKEND = "$dir_pw_log_basic"
 pw_assert_BACKEND = "$dir_pw_assert_log:check_backend"
 pw_sys_io_BACKEND = "${chip_root}/examples/platform/qpg/pw_sys_io:pw_sys_io_qpg"
-pw_span_ENABLE_STD_SPAN_POLYFILL = false
 
 pw_build_LINK_DEPS = [
   "$dir_pw_assert:impl",
diff --git a/config/standalone/args.gni b/config/standalone/args.gni
index 3223574..89e186b 100644
--- a/config/standalone/args.gni
+++ b/config/standalone/args.gni
@@ -19,3 +19,4 @@
 chip_build_tests = false
 
 pw_build_PIP_CONSTRAINTS = [ "${chip_root}/scripts/constraints.txt" ]
+pw_build_PIP_REQUIREMENTS = [ "${chip_root}/scripts/requirements.txt" ]
diff --git a/examples/all-clusters-app/ameba/chip_main.cmake b/examples/all-clusters-app/ameba/chip_main.cmake
index 50d0d2d..b174ade 100755
--- a/examples/all-clusters-app/ameba/chip_main.cmake
+++ b/examples/all-clusters-app/ameba/chip_main.cmake
@@ -234,6 +234,7 @@
     pw_hdlc
     pw_log
     pw_rpc.server
+    pw_sys_io
     pw_trace_tokenized
     pw_trace_tokenized.trace_buffer
     pw_trace_tokenized.rpc_service
diff --git a/examples/all-clusters-app/cc13x2x7_26x2x7/args.gni b/examples/all-clusters-app/cc13x2x7_26x2x7/args.gni
index 8f67c7f..9228f70 100644
--- a/examples/all-clusters-app/cc13x2x7_26x2x7/args.gni
+++ b/examples/all-clusters-app/cc13x2x7_26x2x7/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/cc13x2_26x2/args.gni")
 
 ti_simplelink_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/all-clusters-app/esp32/CMakeLists.txt b/examples/all-clusters-app/esp32/CMakeLists.txt
index fad3865..171db21 100644
--- a/examples/all-clusters-app/esp32/CMakeLists.txt
+++ b/examples/all-clusters-app/esp32/CMakeLists.txt
@@ -66,8 +66,4 @@
 add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo)
 add_subdirectory(third_party/connectedhomeip/examples/platform/esp32/pw_sys_io)
 
-get_target_property(_target_cxx_flags pw_build.cpp17 INTERFACE_COMPILE_OPTIONS)
-list(REMOVE_ITEM _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>)
-list(APPEND _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>)
-set_target_properties(pw_build.cpp17 PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
 endif(CONFIG_ENABLE_PW_RPC)
diff --git a/examples/all-clusters-app/esp32/main/CMakeLists.txt b/examples/all-clusters-app/esp32/main/CMakeLists.txt
index 11445b4..1af642f 100644
--- a/examples/all-clusters-app/esp32/main/CMakeLists.txt
+++ b/examples/all-clusters-app/esp32/main/CMakeLists.txt
@@ -251,6 +251,7 @@
   pw_hdlc
   pw_log
   pw_rpc.server
+  pw_sys_io
   pw_trace_tokenized
   pw_trace_tokenized.trace_buffer
   pw_trace_tokenized.rpc_service
diff --git a/examples/all-clusters-app/infineon/psoc6/args.gni b/examples/all-clusters-app/infineon/psoc6/args.gni
index ce7a2ab..54204a8 100644
--- a/examples/all-clusters-app/infineon/psoc6/args.gni
+++ b/examples/all-clusters-app/infineon/psoc6/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/Infineon/PSOC6/args.gni")
 
 psoc6_target_project =
diff --git a/examples/all-clusters-app/nxp/mw320/args.gni b/examples/all-clusters-app/nxp/mw320/args.gni
index d17e18b..f35eae6 100644
--- a/examples/all-clusters-app/nxp/mw320/args.gni
+++ b/examples/all-clusters-app/nxp/mw320/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/nxp/mw320/args.gni")
 
 mw320_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/all-clusters-app/tizen/.gn b/examples/all-clusters-app/tizen/.gn
index c50b816..edd34d3 100644
--- a/examples/all-clusters-app/tizen/.gn
+++ b/examples/all-clusters-app/tizen/.gn
@@ -22,5 +22,6 @@
 
 default_args = {
   target_os = "tizen"
+
   import("//args.gni")
 }
diff --git a/examples/all-clusters-minimal-app/cc13x2x7_26x2x7/.gn b/examples/all-clusters-minimal-app/cc13x2x7_26x2x7/.gn
index 3d48789..0adefc6 100644
--- a/examples/all-clusters-minimal-app/cc13x2x7_26x2x7/.gn
+++ b/examples/all-clusters-minimal-app/cc13x2x7_26x2x7/.gn
@@ -23,6 +23,5 @@
 default_args = {
   target_cpu = "arm"
   target_os = "freertos"
-
   import("//args.gni")
 }
diff --git a/examples/all-clusters-minimal-app/cc13x2x7_26x2x7/args.gni b/examples/all-clusters-minimal-app/cc13x2x7_26x2x7/args.gni
index 8f67c7f..9228f70 100644
--- a/examples/all-clusters-minimal-app/cc13x2x7_26x2x7/args.gni
+++ b/examples/all-clusters-minimal-app/cc13x2x7_26x2x7/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/cc13x2_26x2/args.gni")
 
 ti_simplelink_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/all-clusters-minimal-app/esp32/CMakeLists.txt b/examples/all-clusters-minimal-app/esp32/CMakeLists.txt
index a1d45e2..7bcb391 100644
--- a/examples/all-clusters-minimal-app/esp32/CMakeLists.txt
+++ b/examples/all-clusters-minimal-app/esp32/CMakeLists.txt
@@ -64,8 +64,4 @@
 add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo)
 add_subdirectory(third_party/connectedhomeip/examples/platform/esp32/pw_sys_io)
 
-get_target_property(_target_cxx_flags pw_build.cpp17 INTERFACE_COMPILE_OPTIONS)
-list(REMOVE_ITEM _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>)
-list(APPEND _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>)
-set_target_properties(pw_build.cpp17 PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
 endif(CONFIG_ENABLE_PW_RPC)
diff --git a/examples/all-clusters-minimal-app/esp32/main/CMakeLists.txt b/examples/all-clusters-minimal-app/esp32/main/CMakeLists.txt
index 376f85b..31be1f4 100644
--- a/examples/all-clusters-minimal-app/esp32/main/CMakeLists.txt
+++ b/examples/all-clusters-minimal-app/esp32/main/CMakeLists.txt
@@ -242,6 +242,7 @@
   pw_hdlc
   pw_log
   pw_rpc.server
+  pw_sys_io
   pw_trace_tokenized
   pw_trace_tokenized.trace_buffer
   pw_trace_tokenized.rpc_service
diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/args.gni b/examples/all-clusters-minimal-app/infineon/psoc6/args.gni
index ce7a2ab..54204a8 100644
--- a/examples/all-clusters-minimal-app/infineon/psoc6/args.gni
+++ b/examples/all-clusters-minimal-app/infineon/psoc6/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/Infineon/PSOC6/args.gni")
 
 psoc6_target_project =
diff --git a/examples/all-clusters-minimal-app/tizen/.gn b/examples/all-clusters-minimal-app/tizen/.gn
index c50b816..edd34d3 100644
--- a/examples/all-clusters-minimal-app/tizen/.gn
+++ b/examples/all-clusters-minimal-app/tizen/.gn
@@ -22,5 +22,6 @@
 
 default_args = {
   target_os = "tizen"
+
   import("//args.gni")
 }
diff --git a/examples/build_overrides/pigweed_environment.gni b/examples/build_overrides/pigweed_environment.gni
index 1d72ca2..7fc8bb9 100644
--- a/examples/build_overrides/pigweed_environment.gni
+++ b/examples/build_overrides/pigweed_environment.gni
@@ -20,10 +20,11 @@
 import("${_bootstrap_root}/build_overrides/pigweed_environment.gni")
 
 # Rebase paths to our root.
-dir_cipd_arm = get_path_info("${_bootstrap_root}/${dir_cipd_arm}", "abspath")
-dir_cipd_pigweed =
-    get_path_info("${_bootstrap_root}/${dir_cipd_pigweed}", "abspath")
-dir_cipd_python =
-    get_path_info("${_bootstrap_root}/${dir_cipd_python}", "abspath")
-dir_virtual_env =
+pw_env_setup_CIPD_ARM =
+    get_path_info("${_bootstrap_root}/${pw_env_setup_CIPD_ARM}", "abspath")
+pw_env_setup_CIPD_PIGWEED =
+    get_path_info("${_bootstrap_root}/${pw_env_setup_CIPD_PIGWEED}", "abspath")
+pw_env_setup_CIPD_PYTHON =
+    get_path_info("${_bootstrap_root}/${pw_env_setup_CIPD_PYTHON}", "abspath")
+pw_env_setup_VIRTUAL_ENV =
     get_path_info("${_bootstrap_root}/${pw_env_setup_VIRTUAL_ENV}", "abspath")
diff --git a/examples/chef/efr32/.gn b/examples/chef/efr32/.gn
index 0ff42d5..4c078f6 100644
--- a/examples/chef/efr32/.gn
+++ b/examples/chef/efr32/.gn
@@ -24,5 +24,6 @@
   target_cpu = "arm"
   target_os = "freertos"
   chip_openthread_ftd = true
+
   import("//args.gni")
 }
diff --git a/examples/chef/efr32/args.gni b/examples/chef/efr32/args.gni
index 4e322f1..907b12f 100644
--- a/examples/chef/efr32/args.gni
+++ b/examples/chef/efr32/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/EFR32/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/chef/esp32/CMakeLists.txt b/examples/chef/esp32/CMakeLists.txt
index 1bb4915..e34fa66 100644
--- a/examples/chef/esp32/CMakeLists.txt
+++ b/examples/chef/esp32/CMakeLists.txt
@@ -80,8 +80,4 @@
 add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo)
 add_subdirectory(third_party/connectedhomeip/examples/platform/esp32/pw_sys_io)
 
-get_target_property(_target_cxx_flags pw_build.cpp17 INTERFACE_COMPILE_OPTIONS)
-list(REMOVE_ITEM _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>)
-list(APPEND _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>)
-set_target_properties(pw_build.cpp17 PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
 endif(CONFIG_ENABLE_PW_RPC)
diff --git a/examples/chef/esp32/main/CMakeLists.txt b/examples/chef/esp32/main/CMakeLists.txt
index 2f02250..777c891 100644
--- a/examples/chef/esp32/main/CMakeLists.txt
+++ b/examples/chef/esp32/main/CMakeLists.txt
@@ -193,6 +193,7 @@
   pw_hdlc
   pw_log
   pw_rpc.server
+  pw_sys_io
   pw_trace_tokenized
   pw_trace_tokenized.trace_buffer
   pw_trace_tokenized.rpc_service
diff --git a/examples/chef/linux/BUILD.gn b/examples/chef/linux/BUILD.gn
index bef04ea..f846337 100644
--- a/examples/chef/linux/BUILD.gn
+++ b/examples/chef/linux/BUILD.gn
@@ -12,8 +12,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import("//build_overrides/build.gni")
 import("//build_overrides/chip.gni")
 
+import("${build_root}/config/compiler/compiler.gni")
 import("${chip_root}/build/chip/tools.gni")
 import("${chip_root}/src/app/chip_data_model.gni")
 import("${chip_root}/src/app/common_flags.gni")
@@ -92,7 +94,10 @@
 
     deps += pw_build_LINK_DEPS
 
-    cflags = [ "-Wno-gnu-designator" ]
+    cflags = []
+    if (is_clang) {
+      cflags += [ "-Wno-gnu-designator" ]
+    }
 
     include_dirs += [ "${chip_root}/examples/common" ]
   } else {
diff --git a/examples/chef/linux/with_pw_rpc.gni b/examples/chef/linux/with_pw_rpc.gni
index 756a934..4167337 100644
--- a/examples/chef/linux/with_pw_rpc.gni
+++ b/examples/chef/linux/with_pw_rpc.gni
@@ -32,7 +32,6 @@
 dir_pw_third_party_nanopb = "${chip_root}/third_party/nanopb/repo"
 pw_chrono_SYSTEM_CLOCK_BACKEND = "$dir_pw_chrono_stl:system_clock"
 pw_sync_MUTEX_BACKEND = "$dir_pw_sync_stl:mutex_backend"
-pw_span_ENABLE_STD_SPAN_POLYFILL = false
 
 pw_build_LINK_DEPS = [
   "$dir_pw_assert:impl",
diff --git a/examples/chef/nrfconnect/CMakeLists.txt b/examples/chef/nrfconnect/CMakeLists.txt
index ecd4ae1..408b079 100644
--- a/examples/chef/nrfconnect/CMakeLists.txt
+++ b/examples/chef/nrfconnect/CMakeLists.txt
@@ -117,7 +117,6 @@
 pw_set_backend(pw_assert.check pw_assert_log.check_backend)
 pw_set_backend(pw_assert.assert pw_assert.assert_compatibility_backend)
 pw_set_backend(pw_sys_io pw_sys_io.nrfconnect)
-pw_set_backend(pw_trace pw_trace_tokenized)
 set(dir_pw_third_party_nanopb "${CHIP_ROOT}/third_party/nanopb/repo" CACHE STRING "" FORCE)
 
 add_subdirectory(third_party/connectedhomeip/examples/platform/nrfconnect/pw_sys_io)
@@ -209,7 +208,6 @@
                        "-DPW_RPC_DESCRIPTOR_SERVICE=1"
                        "-DPW_RPC_DEVICE_SERVICE=1"
                        "-DPW_RPC_THREAD_SERVICE=1"
-                       "-DPW_RPC_TRACING_SERVICE=1"
 )
 
 target_link_libraries(app PRIVATE
@@ -219,17 +217,10 @@
   thread_service.nanopb_rpc
   pw_checksum
   pw_hdlc
+  pw_hdlc.pw_rpc
   pw_log
   pw_rpc.server
-  pw_trace_tokenized
-  pw_trace_tokenized.trace_buffer
-  pw_trace_tokenized.rpc_service
-  pw_trace_tokenized.protos.nanopb_rpc
-)
-
-target_link_options(app
-  PUBLIC
-    "-T${PIGWEED_ROOT}/pw_tokenizer/pw_tokenizer_linker_sections.ld"
+  pw_sys_io
 )
 
 endif(CONFIG_ENABLE_PW_RPC)
diff --git a/examples/common/pigweed/RpcService.cpp b/examples/common/pigweed/RpcService.cpp
index a608272..0b049c0 100644
--- a/examples/common/pigweed/RpcService.cpp
+++ b/examples/common/pigweed/RpcService.cpp
@@ -116,7 +116,7 @@
     std::array<std::byte, kMaxTransmissionUnit> input_buffer;
 
     Logging::Log(Logging::kLogModule_NotSpecified, Logging::kLogCategory_Detail, "Starting pw_rpc server");
-    pw::hdlc::ReadAndProcessPackets(server, hdlc_channel_output, input_buffer);
+    pw::hdlc::ReadAndProcessPackets(server, input_buffer);
 }
 
 } // namespace rpc
diff --git a/examples/common/pigweed/rpc_console/BUILD.gn b/examples/common/pigweed/rpc_console/BUILD.gn
index 3a609b7..2976f56 100644
--- a/examples/common/pigweed/rpc_console/BUILD.gn
+++ b/examples/common/pigweed/rpc_console/BUILD.gn
@@ -29,7 +29,7 @@
 # in:
 #   out/obj/chip_rpc_distribution/  <- source files here
 #   out/obj/chip_rpc_distribution._build_wheel/chip_rpc-0.0.1-py3-none-any.whl
-pw_create_python_source_tree("chip_rpc_distribution") {
+pw_python_distribution("chip_rpc_distribution") {
   packages = [ "py:chip_rpc" ]
   generate_setup_cfg = {
     common_config_file = "common_setup.cfg"
diff --git a/examples/common/pigweed/system_rpc_server.cc b/examples/common/pigweed/system_rpc_server.cc
index 25097eb..6778499 100644
--- a/examples/common/pigweed/system_rpc_server.cc
+++ b/examples/common/pigweed/system_rpc_server.cc
@@ -70,7 +70,7 @@
             hdlc::Frame & frame = result.value();
             if (frame.address() == hdlc::kDefaultRpcAddress)
             {
-                server.ProcessPacket(frame.data(), hdlc_channel_output);
+                server.ProcessPacket(frame.data());
             }
         }
     }
diff --git a/examples/contact-sensor-app/nxp/k32w/k32w0/args.gni b/examples/contact-sensor-app/nxp/k32w/k32w0/args.gni
index 5f4766d..4f4bba4 100644
--- a/examples/contact-sensor-app/nxp/k32w/k32w0/args.gni
+++ b/examples/contact-sensor-app/nxp/k32w/k32w0/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/nxp/k32w/k32w0/args.gni")
 
 # SDK target. This is overridden to add our SDK app_config.h & defines.
diff --git a/examples/darwin-framework-tool/.gn b/examples/darwin-framework-tool/.gn
index 00e4026..d7b777f 100644
--- a/examples/darwin-framework-tool/.gn
+++ b/examples/darwin-framework-tool/.gn
@@ -22,6 +22,5 @@
 
 default_args = {
   import("//args.gni")
-
   chip_disable_platform_kvs = true
 }
diff --git a/examples/dynamic-bridge-app/linux/with_pw_rpc.gni b/examples/dynamic-bridge-app/linux/with_pw_rpc.gni
index 756a934..4167337 100644
--- a/examples/dynamic-bridge-app/linux/with_pw_rpc.gni
+++ b/examples/dynamic-bridge-app/linux/with_pw_rpc.gni
@@ -32,7 +32,6 @@
 dir_pw_third_party_nanopb = "${chip_root}/third_party/nanopb/repo"
 pw_chrono_SYSTEM_CLOCK_BACKEND = "$dir_pw_chrono_stl:system_clock"
 pw_sync_MUTEX_BACKEND = "$dir_pw_sync_stl:mutex_backend"
-pw_span_ENABLE_STD_SPAN_POLYFILL = false
 
 pw_build_LINK_DEPS = [
   "$dir_pw_assert:impl",
diff --git a/examples/light-switch-app/ameba/chip_main.cmake b/examples/light-switch-app/ameba/chip_main.cmake
index 33058ac..3306cbf 100755
--- a/examples/light-switch-app/ameba/chip_main.cmake
+++ b/examples/light-switch-app/ameba/chip_main.cmake
@@ -225,6 +225,7 @@
     pw_hdlc
     pw_log
     pw_rpc.server
+    pw_sys_io
     pw_trace_tokenized
     pw_trace_tokenized.trace_buffer
     pw_trace_tokenized.rpc_service
diff --git a/examples/light-switch-app/efr32/.gn b/examples/light-switch-app/efr32/.gn
index 0ff42d5..4c078f6 100644
--- a/examples/light-switch-app/efr32/.gn
+++ b/examples/light-switch-app/efr32/.gn
@@ -24,5 +24,6 @@
   target_cpu = "arm"
   target_os = "freertos"
   chip_openthread_ftd = true
+
   import("//args.gni")
 }
diff --git a/examples/light-switch-app/efr32/args.gni b/examples/light-switch-app/efr32/args.gni
index 8e1885d..752701e 100644
--- a/examples/light-switch-app/efr32/args.gni
+++ b/examples/light-switch-app/efr32/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/EFR32/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/light-switch-app/efr32/build_for_wifi_args.gni b/examples/light-switch-app/efr32/build_for_wifi_args.gni
index 4a3bdfd..236f166 100644
--- a/examples/light-switch-app/efr32/build_for_wifi_args.gni
+++ b/examples/light-switch-app/efr32/build_for_wifi_args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
 chip_enable_openthread = false
diff --git a/examples/lighting-app/ameba/chip_main.cmake b/examples/lighting-app/ameba/chip_main.cmake
index b8120c6..816fd86 100755
--- a/examples/lighting-app/ameba/chip_main.cmake
+++ b/examples/lighting-app/ameba/chip_main.cmake
@@ -220,6 +220,7 @@
     pw_hdlc
     pw_log
     pw_rpc.server
+    pw_sys_io
     pw_trace_tokenized
     pw_trace_tokenized.trace_buffer
     pw_trace_tokenized.rpc_service
diff --git a/examples/lighting-app/beken/args.gni b/examples/lighting-app/beken/args.gni
index 4dc3ac9..79a52c9 100755
--- a/examples/lighting-app/beken/args.gni
+++ b/examples/lighting-app/beken/args.gni
@@ -16,6 +16,7 @@
 # options are used from examples/.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 
 chip_device_platform = "beken"
 
diff --git a/examples/lighting-app/bouffalolab/bl602/args.gni b/examples/lighting-app/bouffalolab/bl602/args.gni
index 0a6bd07..464b0c6 100644
--- a/examples/lighting-app/bouffalolab/bl602/args.gni
+++ b/examples/lighting-app/bouffalolab/bl602/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/bouffalolab/BL602/args.gni")
 
 bl602_sdk_target = get_label_info(":sdk", "label_no_toolchain")
@@ -24,3 +25,8 @@
 
 chip_enable_ota_requestor = true
 chip_detail_logging = false
+
+pw_build_LINK_DEPS = [
+  "$dir_pw_assert:impl",
+  "$dir_pw_log:impl",
+]
diff --git a/examples/lighting-app/bouffalolab/bl702/args.gni b/examples/lighting-app/bouffalolab/bl702/args.gni
index 501f427..ecfb742 100644
--- a/examples/lighting-app/bouffalolab/bl702/args.gni
+++ b/examples/lighting-app/bouffalolab/bl702/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/bouffalolab/BL702/args.gni")
 
 bl702_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/lighting-app/efr32/.gn b/examples/lighting-app/efr32/.gn
index 0ff42d5..4c078f6 100644
--- a/examples/lighting-app/efr32/.gn
+++ b/examples/lighting-app/efr32/.gn
@@ -24,5 +24,6 @@
   target_cpu = "arm"
   target_os = "freertos"
   chip_openthread_ftd = true
+
   import("//args.gni")
 }
diff --git a/examples/lighting-app/efr32/args.gni b/examples/lighting-app/efr32/args.gni
index 1e5ed4c..7f4a06e 100644
--- a/examples/lighting-app/efr32/args.gni
+++ b/examples/lighting-app/efr32/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/EFR32/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/lighting-app/efr32/build_for_wifi_args.gni b/examples/lighting-app/efr32/build_for_wifi_args.gni
index 4a3bdfd..236f166 100644
--- a/examples/lighting-app/efr32/build_for_wifi_args.gni
+++ b/examples/lighting-app/efr32/build_for_wifi_args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
 chip_enable_openthread = false
diff --git a/examples/lighting-app/esp32/CMakeLists.txt b/examples/lighting-app/esp32/CMakeLists.txt
index 30d1000..b865807 100644
--- a/examples/lighting-app/esp32/CMakeLists.txt
+++ b/examples/lighting-app/esp32/CMakeLists.txt
@@ -66,8 +66,8 @@
 add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo)
 add_subdirectory(third_party/connectedhomeip/examples/platform/esp32/pw_sys_io)
 
-get_target_property(_target_cxx_flags pw_build.cpp17 INTERFACE_COMPILE_OPTIONS)
+get_target_property(_target_cxx_flags pw_build.cpp17._public_config INTERFACE_COMPILE_OPTIONS)
 list(REMOVE_ITEM _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>)
 list(APPEND _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>)
-set_target_properties(pw_build.cpp17 PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
+set_target_properties(pw_build.cpp17._public_config PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
 endif(CONFIG_ENABLE_PW_RPC)
diff --git a/examples/lighting-app/esp32/main/CMakeLists.txt b/examples/lighting-app/esp32/main/CMakeLists.txt
index 61953e1..f7517c6 100644
--- a/examples/lighting-app/esp32/main/CMakeLists.txt
+++ b/examples/lighting-app/esp32/main/CMakeLists.txt
@@ -207,6 +207,7 @@
   pw_hdlc
   pw_log
   pw_rpc.server
+  pw_sys_io
   pw_trace_tokenized
   pw_trace_tokenized.trace_buffer
   pw_trace_tokenized.rpc_service
diff --git a/examples/lighting-app/genio/.gn b/examples/lighting-app/genio/.gn
index 0adefc6..3d48789 100644
--- a/examples/lighting-app/genio/.gn
+++ b/examples/lighting-app/genio/.gn
@@ -23,5 +23,6 @@
 default_args = {
   target_cpu = "arm"
   target_os = "freertos"
+
   import("//args.gni")
 }
diff --git a/examples/lighting-app/genio/args.gni b/examples/lighting-app/genio/args.gni
index ddbfb9f..e228696 100644
--- a/examples/lighting-app/genio/args.gni
+++ b/examples/lighting-app/genio/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/mt793x/args.gni")
 
 mt793x_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/lighting-app/infineon/cyw30739/args.gni b/examples/lighting-app/infineon/cyw30739/args.gni
index ff653ee..b8aeb76 100644
--- a/examples/lighting-app/infineon/cyw30739/args.gni
+++ b/examples/lighting-app/infineon/cyw30739/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/Infineon/CYW30739/args.gni")
 
 cyw30739_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/lighting-app/infineon/psoc6/args.gni b/examples/lighting-app/infineon/psoc6/args.gni
index 9ca701a..f9812d7 100644
--- a/examples/lighting-app/infineon/psoc6/args.gni
+++ b/examples/lighting-app/infineon/psoc6/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/Infineon/PSOC6/args.gni")
 
 psoc6_target_project =
diff --git a/examples/lighting-app/linux/with_pw_rpc.gni b/examples/lighting-app/linux/with_pw_rpc.gni
index 756a934..4167337 100644
--- a/examples/lighting-app/linux/with_pw_rpc.gni
+++ b/examples/lighting-app/linux/with_pw_rpc.gni
@@ -32,7 +32,6 @@
 dir_pw_third_party_nanopb = "${chip_root}/third_party/nanopb/repo"
 pw_chrono_SYSTEM_CLOCK_BACKEND = "$dir_pw_chrono_stl:system_clock"
 pw_sync_MUTEX_BACKEND = "$dir_pw_sync_stl:mutex_backend"
-pw_span_ENABLE_STD_SPAN_POLYFILL = false
 
 pw_build_LINK_DEPS = [
   "$dir_pw_assert:impl",
diff --git a/examples/lighting-app/nrfconnect/CMakeLists.txt b/examples/lighting-app/nrfconnect/CMakeLists.txt
index 8de4481..02ee050 100644
--- a/examples/lighting-app/nrfconnect/CMakeLists.txt
+++ b/examples/lighting-app/nrfconnect/CMakeLists.txt
@@ -94,7 +94,6 @@
 pw_set_backend(pw_assert.check pw_assert_log.check_backend)
 pw_set_backend(pw_assert.assert pw_assert.assert_compatibility_backend)
 pw_set_backend(pw_sys_io pw_sys_io.nrfconnect)
-pw_set_backend(pw_trace pw_trace_tokenized)
 set(dir_pw_third_party_nanopb "${CHIP_ROOT}/third_party/nanopb/repo" CACHE STRING "" FORCE)
 
 add_subdirectory(third_party/connectedhomeip/examples/platform/nrfconnect/pw_sys_io)
@@ -194,7 +193,6 @@
 )
 
 target_include_directories(app PRIVATE
-  ${PIGWEED_ROOT}/pw_sys_io/public
   ${CHIP_ROOT}/src/lib/support
   ${CHIP_ROOT}/src/system
   ${NRFCONNECT_COMMON}
@@ -209,8 +207,7 @@
                        "-DPW_RPC_DEVICE_SERVICE=1"
                        "-DPW_RPC_LIGHTING_SERVICE=1"
                        "-DPW_RPC_THREAD_SERVICE=1"
-                       "-DPW_RPC_TRACING_SERVICE=1"
-                       "-DPW_TRACE_BACKEND_SET=1")
+                       )
 
 target_link_libraries(app PRIVATE
   attributes_service.nanopb_rpc
@@ -221,17 +218,10 @@
   thread_service.nanopb_rpc
   pw_checksum
   pw_hdlc
+  pw_hdlc.pw_rpc
   pw_log
   pw_rpc.server
-  pw_trace_tokenized
-  pw_trace_tokenized.trace_buffer
-  pw_trace_tokenized.rpc_service
-  pw_trace_tokenized.protos.nanopb_rpc
-)
-
-target_link_options(app
-  PUBLIC
-    "-T${PIGWEED_ROOT}/pw_tokenizer/pw_tokenizer_linker_sections.ld"
+  pw_sys_io
 )
 
 endif(CONFIG_CHIP_PW_RPC)
diff --git a/examples/lighting-app/nxp/k32w/k32w0/args.gni b/examples/lighting-app/nxp/k32w/k32w0/args.gni
index 5f4766d..4f4bba4 100644
--- a/examples/lighting-app/nxp/k32w/k32w0/args.gni
+++ b/examples/lighting-app/nxp/k32w/k32w0/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/nxp/k32w/k32w0/args.gni")
 
 # SDK target. This is overridden to add our SDK app_config.h & defines.
diff --git a/examples/lighting-app/qpg/args.gni b/examples/lighting-app/qpg/args.gni
index 3e533b2..053b2c0 100644
--- a/examples/lighting-app/qpg/args.gni
+++ b/examples/lighting-app/qpg/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/qpg/args.gni")
 
 qpg_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/lighting-app/tizen/.gn b/examples/lighting-app/tizen/.gn
index c50b816..edd34d3 100644
--- a/examples/lighting-app/tizen/.gn
+++ b/examples/lighting-app/tizen/.gn
@@ -22,5 +22,6 @@
 
 default_args = {
   target_os = "tizen"
+
   import("//args.gni")
 }
diff --git a/examples/lock-app/cc13x2x7_26x2x7/args.gni b/examples/lock-app/cc13x2x7_26x2x7/args.gni
index c93d04b..58a0bbb 100644
--- a/examples/lock-app/cc13x2x7_26x2x7/args.gni
+++ b/examples/lock-app/cc13x2x7_26x2x7/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/cc13x2_26x2/args.gni")
 
 ti_simplelink_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/lock-app/cc32xx/args.gni b/examples/lock-app/cc32xx/args.gni
index 8d5afa6..aaf3944 100755
--- a/examples/lock-app/cc32xx/args.gni
+++ b/examples/lock-app/cc32xx/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/cc32xx/args.gni")
 
 ti_simplelink_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/lock-app/efr32/.gn b/examples/lock-app/efr32/.gn
index 0ff42d5..4c078f6 100644
--- a/examples/lock-app/efr32/.gn
+++ b/examples/lock-app/efr32/.gn
@@ -24,5 +24,6 @@
   target_cpu = "arm"
   target_os = "freertos"
   chip_openthread_ftd = true
+
   import("//args.gni")
 }
diff --git a/examples/lock-app/efr32/args.gni b/examples/lock-app/efr32/args.gni
index 9ff5e1f..02ac44a 100644
--- a/examples/lock-app/efr32/args.gni
+++ b/examples/lock-app/efr32/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/EFR32/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/lock-app/efr32/build_for_wifi_args.gni b/examples/lock-app/efr32/build_for_wifi_args.gni
index 4a3bdfd..236f166 100644
--- a/examples/lock-app/efr32/build_for_wifi_args.gni
+++ b/examples/lock-app/efr32/build_for_wifi_args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
 chip_enable_openthread = false
diff --git a/examples/lock-app/esp32/CMakeLists.txt b/examples/lock-app/esp32/CMakeLists.txt
index 0c55757..9cc498c 100644
--- a/examples/lock-app/esp32/CMakeLists.txt
+++ b/examples/lock-app/esp32/CMakeLists.txt
@@ -57,10 +57,10 @@
 add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo)
 add_subdirectory(third_party/connectedhomeip/examples/platform/esp32/pw_sys_io)
 
-get_target_property(_target_cxx_flags pw_build.cpp17 INTERFACE_COMPILE_OPTIONS)
+get_target_property(_target_cxx_flags pw_build.cpp17._public_config INTERFACE_COMPILE_OPTIONS)
 list(REMOVE_ITEM _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>)
 list(APPEND _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>)
-set_target_properties(pw_build.cpp17 PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
+set_target_properties(pw_build.cpp17._public_config PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
 endif(CONFIG_ENABLE_PW_RPC)
 
 flashing_script()
diff --git a/examples/lock-app/esp32/main/CMakeLists.txt b/examples/lock-app/esp32/main/CMakeLists.txt
index eee6f69..2ba9539 100644
--- a/examples/lock-app/esp32/main/CMakeLists.txt
+++ b/examples/lock-app/esp32/main/CMakeLists.txt
@@ -132,6 +132,7 @@
   pw_hdlc
   pw_log
   pw_rpc.server
+  pw_sys_io
 )
 
 target_compile_options(${COMPONENT_LIB} PRIVATE
diff --git a/examples/lock-app/infineon/cyw30739/args.gni b/examples/lock-app/infineon/cyw30739/args.gni
index ff653ee..b8aeb76 100644
--- a/examples/lock-app/infineon/cyw30739/args.gni
+++ b/examples/lock-app/infineon/cyw30739/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/Infineon/CYW30739/args.gni")
 
 cyw30739_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/lock-app/infineon/psoc6/args.gni b/examples/lock-app/infineon/psoc6/args.gni
index 62bdc6d..b65d0d8 100644
--- a/examples/lock-app/infineon/psoc6/args.gni
+++ b/examples/lock-app/infineon/psoc6/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/Infineon/PSOC6/args.gni")
 
 psoc6_target_project =
diff --git a/examples/lock-app/nxp/k32w/k32w0/args.gni b/examples/lock-app/nxp/k32w/k32w0/args.gni
index 2ace835..dd8543b 100644
--- a/examples/lock-app/nxp/k32w/k32w0/args.gni
+++ b/examples/lock-app/nxp/k32w/k32w0/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/nxp/k32w/k32w0/args.gni")
 
 # SDK target. This is overridden to add our SDK app_config.h & defines.
diff --git a/examples/lock-app/qpg/args.gni b/examples/lock-app/qpg/args.gni
index 26f7455..065c9f0 100644
--- a/examples/lock-app/qpg/args.gni
+++ b/examples/lock-app/qpg/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/qpg/args.gni")
 
 qpg_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/ota-requestor-app/esp32/CMakeLists.txt b/examples/ota-requestor-app/esp32/CMakeLists.txt
index ca79dd4..6d522a0 100644
--- a/examples/ota-requestor-app/esp32/CMakeLists.txt
+++ b/examples/ota-requestor-app/esp32/CMakeLists.txt
@@ -57,10 +57,10 @@
 add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo)
 add_subdirectory(third_party/connectedhomeip/examples/platform/esp32/pw_sys_io)
 
-get_target_property(_target_cxx_flags pw_build.cpp17 INTERFACE_COMPILE_OPTIONS)
+get_target_property(_target_cxx_flags pw_build.cpp17._public_config INTERFACE_COMPILE_OPTIONS)
 list(REMOVE_ITEM _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>)
 list(APPEND _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>)
-set_target_properties(pw_build.cpp17 PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
+set_target_properties(pw_build.cpp17._public_config PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
 endif(CONFIG_ENABLE_PW_RPC)
 
 
diff --git a/examples/ota-requestor-app/esp32/main/CMakeLists.txt b/examples/ota-requestor-app/esp32/main/CMakeLists.txt
index a063351..184e29a 100644
--- a/examples/ota-requestor-app/esp32/main/CMakeLists.txt
+++ b/examples/ota-requestor-app/esp32/main/CMakeLists.txt
@@ -176,6 +176,7 @@
   pw_hdlc
   pw_log
   pw_rpc.server
+  pw_sys_io
   pw_trace_tokenized
   pw_trace_tokenized.trace_buffer
   pw_trace_tokenized.rpc_service
diff --git a/examples/ota-requestor-app/infineon/cyw30739/args.gni b/examples/ota-requestor-app/infineon/cyw30739/args.gni
index 67d2b05..e6ec7f5 100644
--- a/examples/ota-requestor-app/infineon/cyw30739/args.gni
+++ b/examples/ota-requestor-app/infineon/cyw30739/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/Infineon/CYW30739/args.gni")
 
 cyw30739_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/persistent-storage/cc13x2x7_26x2x7/args.gni b/examples/persistent-storage/cc13x2x7_26x2x7/args.gni
index c35354a..ad8a3f8 100644
--- a/examples/persistent-storage/cc13x2x7_26x2x7/args.gni
+++ b/examples/persistent-storage/cc13x2x7_26x2x7/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/cc13x2_26x2/args.gni")
 
 ti_simplelink_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/persistent-storage/efr32/args.gni b/examples/persistent-storage/efr32/args.gni
index 9c2f04d..312d2ea 100644
--- a/examples/persistent-storage/efr32/args.gni
+++ b/examples/persistent-storage/efr32/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/EFR32/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/persistent-storage/infineon/psoc6/args.gni b/examples/persistent-storage/infineon/psoc6/args.gni
index 0b4443e..b8727e9 100644
--- a/examples/persistent-storage/infineon/psoc6/args.gni
+++ b/examples/persistent-storage/infineon/psoc6/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/Infineon/PSOC6/args.gni")
 
 psoc6_target_project =
diff --git a/examples/persistent-storage/qpg/args.gni b/examples/persistent-storage/qpg/args.gni
index 68e1d67..15224d9 100644
--- a/examples/persistent-storage/qpg/args.gni
+++ b/examples/persistent-storage/qpg/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/qpg/args.gni")
 qpg_sdk_target = get_label_info(":sdk", "label_no_toolchain")
 chip_enable_openthread = false
diff --git a/examples/pigweed-app/ameba/chip_main.cmake b/examples/pigweed-app/ameba/chip_main.cmake
index 77e63b6..be170a6 100644
--- a/examples/pigweed-app/ameba/chip_main.cmake
+++ b/examples/pigweed-app/ameba/chip_main.cmake
@@ -64,6 +64,7 @@
     pw_log
     pw_rpc.nanopb.echo_service
     pw_rpc.server
+    pw_sys_io
     PwRpc
 )
 
diff --git a/examples/pigweed-app/efr32/args.gni b/examples/pigweed-app/efr32/args.gni
index eb9d282..b42ad92 100644
--- a/examples/pigweed-app/efr32/args.gni
+++ b/examples/pigweed-app/efr32/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("${chip_root}/config/efr32/lib/pw_rpc/pw_rpc.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/EFR32/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/pigweed-app/esp32/CMakeLists.txt b/examples/pigweed-app/esp32/CMakeLists.txt
index fd8c178..81aa021 100644
--- a/examples/pigweed-app/esp32/CMakeLists.txt
+++ b/examples/pigweed-app/esp32/CMakeLists.txt
@@ -58,9 +58,9 @@
 add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo)
 add_subdirectory(third_party/connectedhomeip/examples/platform/esp32/pw_sys_io)
 
-get_target_property(_target_cxx_flags pw_build.cpp17 INTERFACE_COMPILE_OPTIONS)
+get_target_property(_target_cxx_flags pw_build.cpp17._public_config INTERFACE_COMPILE_OPTIONS)
 list(REMOVE_ITEM _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>)
 list(APPEND _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>)
-set_target_properties(pw_build.cpp17 PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
+set_target_properties(pw_build.cpp17._public_config PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
 
 flashing_script(DEPENDS "${CMAKE_CURRENT_LIST_DIR}/echo_test_config.yml" "${CMAKE_CURRENT_LIST_DIR}/third_party/connectedhomeip/examples/pigweed-app/mobly_tests/echo_test.py")
diff --git a/examples/pigweed-app/esp32/main/CMakeLists.txt b/examples/pigweed-app/esp32/main/CMakeLists.txt
index c23dfe3..005f587 100644
--- a/examples/pigweed-app/esp32/main/CMakeLists.txt
+++ b/examples/pigweed-app/esp32/main/CMakeLists.txt
@@ -43,4 +43,5 @@
     pw_log
     pw_rpc.nanopb.echo_service
     pw_rpc.server
+    pw_sys_io
 )
diff --git a/examples/pigweed-app/nrfconnect/CMakeLists.txt b/examples/pigweed-app/nrfconnect/CMakeLists.txt
index 90d53ea..183e929 100644
--- a/examples/pigweed-app/nrfconnect/CMakeLists.txt
+++ b/examples/pigweed-app/nrfconnect/CMakeLists.txt
@@ -87,9 +87,11 @@
 target_link_libraries(app PUBLIC
   pw_checksum
   pw_hdlc
+  pw_hdlc.pw_rpc
   pw_log
   pw_rpc.nanopb.echo_service
   pw_rpc.server
+  pw_sys_io
 )
 
 # Workaround cyclic dependency between nrf_security libraries)
diff --git a/examples/platform/linux/system_rpc_server.cc b/examples/platform/linux/system_rpc_server.cc
index d9822a7..dee4bb6 100644
--- a/examples/platform/linux/system_rpc_server.cc
+++ b/examples/platform/linux/system_rpc_server.cc
@@ -110,7 +110,7 @@
                 continue;
             }
 
-            server.ProcessPacket(frame.data(), hdlc_channel_output).IgnoreError();
+            server.ProcessPacket(frame.data()).IgnoreError();
         }
     }
 }
diff --git a/examples/pump-app/cc13x2x7_26x2x7/args.gni b/examples/pump-app/cc13x2x7_26x2x7/args.gni
index 165cee6..8baf897 100644
--- a/examples/pump-app/cc13x2x7_26x2x7/args.gni
+++ b/examples/pump-app/cc13x2x7_26x2x7/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/cc13x2_26x2/args.gni")
 
 ti_simplelink_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/pump-controller-app/cc13x2x7_26x2x7/args.gni b/examples/pump-controller-app/cc13x2x7_26x2x7/args.gni
index 5b9366d..7d386dc 100644
--- a/examples/pump-controller-app/cc13x2x7_26x2x7/args.gni
+++ b/examples/pump-controller-app/cc13x2x7_26x2x7/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/cc13x2_26x2/args.gni")
 
 ti_simplelink_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/shell/cc13x2x7_26x2x7/args.gni b/examples/shell/cc13x2x7_26x2x7/args.gni
index 2966155..58ec5ed 100644
--- a/examples/shell/cc13x2x7_26x2x7/args.gni
+++ b/examples/shell/cc13x2x7_26x2x7/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/cc13x2_26x2/args.gni")
 
 ti_simplelink_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/shell/efr32/args.gni b/examples/shell/efr32/args.gni
index a80bfb3..5807e23 100644
--- a/examples/shell/efr32/args.gni
+++ b/examples/shell/efr32/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/EFR32/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/shell/genio/args.gni b/examples/shell/genio/args.gni
index bad599b..8d2c11d 100644
--- a/examples/shell/genio/args.gni
+++ b/examples/shell/genio/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/mt793x/args.gni")
 
 mt793x_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/shell/nxp/k32w/k32w0/args.gni b/examples/shell/nxp/k32w/k32w0/args.gni
index e542c99..e9f2a25 100644
--- a/examples/shell/nxp/k32w/k32w0/args.gni
+++ b/examples/shell/nxp/k32w/k32w0/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/nxp/k32w/k32w0/args.gni")
 import("${chip_root}/src/platform/nxp/k32w/k32w0/args.gni")
 
diff --git a/examples/shell/qpg/args.gni b/examples/shell/qpg/args.gni
index 46bcd2a..84ab4b4 100644
--- a/examples/shell/qpg/args.gni
+++ b/examples/shell/qpg/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/examples/platform/qpg/args.gni")
 
 qpg_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/temperature-measurement-app/esp32/CMakeLists.txt b/examples/temperature-measurement-app/esp32/CMakeLists.txt
index dd7332f..c1c8251 100644
--- a/examples/temperature-measurement-app/esp32/CMakeLists.txt
+++ b/examples/temperature-measurement-app/esp32/CMakeLists.txt
@@ -63,8 +63,8 @@
 add_subdirectory(third_party/connectedhomeip/third_party/nanopb/repo)
 add_subdirectory(third_party/connectedhomeip/examples/platform/esp32/pw_sys_io)
 
-get_target_property(_target_cxx_flags pw_build.cpp17 INTERFACE_COMPILE_OPTIONS)
+get_target_property(_target_cxx_flags pw_build.cpp17._public_config INTERFACE_COMPILE_OPTIONS)
 list(REMOVE_ITEM _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=c++17>)
 list(APPEND _target_cxx_flags $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++17>)
-set_target_properties(pw_build.cpp17 PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
+set_target_properties(pw_build.cpp17._public_config PROPERTIES INTERFACE_COMPILE_OPTIONS "${_target_cxx_flags}")
 endif(CONFIG_ENABLE_PW_RPC)
diff --git a/examples/temperature-measurement-app/esp32/main/CMakeLists.txt b/examples/temperature-measurement-app/esp32/main/CMakeLists.txt
index dce457d..68e49f1 100644
--- a/examples/temperature-measurement-app/esp32/main/CMakeLists.txt
+++ b/examples/temperature-measurement-app/esp32/main/CMakeLists.txt
@@ -167,6 +167,7 @@
   pw_hdlc
   pw_log
   pw_rpc.server
+  pw_sys_io
   pw_trace_tokenized
   pw_trace_tokenized.trace_buffer
   pw_trace_tokenized.rpc_service
diff --git a/examples/thermostat/efr32/.gn b/examples/thermostat/efr32/.gn
index 0ff42d5..4c078f6 100644
--- a/examples/thermostat/efr32/.gn
+++ b/examples/thermostat/efr32/.gn
@@ -24,5 +24,6 @@
   target_cpu = "arm"
   target_os = "freertos"
   chip_openthread_ftd = true
+
   import("//args.gni")
 }
diff --git a/examples/thermostat/efr32/args.gni b/examples/thermostat/efr32/args.gni
index 1e5ed4c..7f4a06e 100644
--- a/examples/thermostat/efr32/args.gni
+++ b/examples/thermostat/efr32/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/EFR32/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/examples/thermostat/efr32/build_for_wifi_args.gni b/examples/thermostat/efr32/build_for_wifi_args.gni
index 4a3bdfd..236f166 100644
--- a/examples/thermostat/efr32/build_for_wifi_args.gni
+++ b/examples/thermostat/efr32/build_for_wifi_args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
 chip_enable_openthread = false
diff --git a/examples/window-app/efr32/.gn b/examples/window-app/efr32/.gn
index 0ff42d5..4c078f6 100644
--- a/examples/window-app/efr32/.gn
+++ b/examples/window-app/efr32/.gn
@@ -24,5 +24,6 @@
   target_cpu = "arm"
   target_os = "freertos"
   chip_openthread_ftd = true
+
   import("//args.gni")
 }
diff --git a/examples/window-app/efr32/args.gni b/examples/window-app/efr32/args.gni
index 26f97a8..c45308a 100644
--- a/examples/window-app/efr32/args.gni
+++ b/examples/window-app/efr32/args.gni
@@ -14,6 +14,7 @@
 
 import("//build_overrides/chip.gni")
 import("//build_overrides/pigweed.gni")
+import("${chip_root}/config/standalone/args.gni")
 import("${chip_root}/src/platform/EFR32/args.gni")
 
 efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain")
diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh
index 9e653ff..f6d52e0 100644
--- a/scripts/bootstrap.sh
+++ b/scripts/bootstrap.sh
@@ -57,12 +57,26 @@
 
     local _PW_BANNER_FUNC="_chip_bootstrap_banner"
 
+    # Force the Pigweed environment directory to be '.environment'
+    if [ -z "$PW_ENVIRONMENT_ROOT" ]; then
+        export PW_ENVIRONMENT_ROOT="$PW_PROJECT_ROOT/.environment"
+    fi
+
     export _PW_ACTUAL_ENVIRONMENT_ROOT="$(pw_get_env_root)"
     local _SETUP_SH="$_PW_ACTUAL_ENVIRONMENT_ROOT/activate.sh"
 
     export PW_DOCTOR_SKIP_CIPD_CHECKS=1
     export PATH # https://bugs.chromium.org/p/pigweed/issues/detail?id=281
 
+    if test -n "$GITHUB_ACTION"; then
+        mkdir -p "$_PW_ACTUAL_ENVIRONMENT_ROOT"
+        tee <<EOF >"${_PW_ACTUAL_ENVIRONMENT_ROOT}/pip.conf"
+[global]
+cache-dir = ${_PW_ACTUAL_ENVIRONMENT_ROOT}/pip-cache
+EOF
+        export PIP_CONFIG_FILE="$_PW_ACTUAL_ENVIRONMENT_ROOT/pip.conf"
+    fi
+
     if [ "$_BOOTSTRAP_NAME" = "bootstrap.sh" ] ||
         [ ! -f "$_SETUP_SH" ] ||
         [ ! -s "$_SETUP_SH" ]; then
diff --git a/scripts/constraints.txt b/scripts/constraints.txt
index 76b66c4..3f328fd 100644
--- a/scripts/constraints.txt
+++ b/scripts/constraints.txt
@@ -160,6 +160,12 @@
     # via -r requirements.mbed.txt
 mobly==1.11.1
     # via -r requirements.txt
+mypy==0.971
+    # via -r requirements.txt
+mypy-extensions==0.4.3
+    # via mypy
+mypy-protobuf==3.2.0
+    # via -r requirements.txt
 numpy==1.23.0
     # via pandas
 packaging==20.9
@@ -196,13 +202,12 @@
     #   mbed-os-tools
 prompt-toolkit==3.0.26
     # via ipython
-protobuf==3.17.3
-    # via -r requirements.txt
-psutil==5.9.1
+protobuf==3.20.1
     # via
     #   -r requirements.txt
-    #   mobly
-    #   mbed-tools
+    #   mypy-protobuf
+psutil==5.9.1
+    # via -r requirements.txt
 ptyprocess==0.7.0
     # via pexpect
 py==1.11.0
@@ -287,7 +292,6 @@
     #   idf-component-manager
     #   junit-xml
     #   mbed-os-tools
-    #   protobuf
     #   python-dateutil
     #   python-engineio
     #   python-socketio
@@ -309,6 +313,8 @@
     # via
     #   pep517
     #   pytest
+tomli==2.0.1
+    # via mypy
 tornado==6.1
     # via -r requirements.txt
 tqdm==4.61.1
@@ -319,10 +325,15 @@
     # via
     #   ipython
     #   matplotlib-inline
+types-protobuf==3.19.22
+    # via
+    #   -r requirements.txt
+    #   mypy-protobuf
 typing-extensions==4.3.0 ; platform_machine != "aarch64" and sys_platform == "linux"
     # via
     #   -r requirements.mbed.txt
-    #   mbed-tools
+    #   mobly
+    #   mypy
 urllib3==1.26.5
     # via requests
 virtualenv==20.4.7
diff --git a/scripts/requirements.txt b/scripts/requirements.txt
index c08e4d5..4bb21d2 100644
--- a/scripts/requirements.txt
+++ b/scripts/requirements.txt
@@ -48,7 +48,10 @@
 appdirs
 coloredlogs
 watchdog
-protobuf
+mypy==0.971
+mypy-protobuf==3.2.0
+protobuf==3.20.1
+types-protobuf==3.19.22
 
 # scripts/tools/memory
 anytree
diff --git a/scripts/run_codegen_targets.sh b/scripts/run_codegen_targets.sh
index 5f8bcd5..03baee3 100755
--- a/scripts/run_codegen_targets.sh
+++ b/scripts/run_codegen_targets.sh
@@ -44,7 +44,7 @@
 done
 
 # Code generation (based on zap/matter)
-for name in $(ninja -C "$OUT_DIR" -t targets | grep -E '_codegen:' | sed 's/: .*//'); do
+for name in $(ninja -C "$OUT_DIR" -t targets | grep -E -v '_no_codegen:' | grep -E '_codegen:' | sed 's/: .*//'); do
     echo "Generating $name ..."
     ninja -C "$OUT_DIR" "$name"
 done
diff --git a/src/platform/bouffalolab/BL702/args.gni b/src/platform/bouffalolab/BL702/args.gni
index 645a496..77396b3 100644
--- a/src/platform/bouffalolab/BL702/args.gni
+++ b/src/platform/bouffalolab/BL702/args.gni
@@ -15,6 +15,7 @@
 import("//build_overrides/bouffalolab_iot_sdk.gni")
 import("//build_overrides/chip.gni")
 import("//build_overrides/mbedtls.gni")
+import("//build_overrides/pigweed.gni")
 import("${chip_root}/examples/platform/bouffalolab/bl702/args.gni")
 
 chip_device_platform = "bl702"
@@ -37,3 +38,8 @@
 openthread_project_include_dirs =
     [ "${chip_root}/src/platform/bouffalolab/BL702" ]
 openthread_external_platform = "${bl702_sdk_build_root}:bl702_sdk"
+
+pw_build_LINK_DEPS = [
+  "$dir_pw_assert:impl",
+  "$dir_pw_log:impl",
+]
diff --git a/src/platform/qpg/args.gni b/src/platform/qpg/args.gni
index 4bdd6ff..9f32651 100644
--- a/src/platform/qpg/args.gni
+++ b/src/platform/qpg/args.gni
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import("//build_overrides/chip.gni")
+import("//build_overrides/pigweed.gni")
 import("//build_overrides/qpg_sdk.gni")
 import("${qpg_sdk_build_root}/qpg_sdk.gni")
 
@@ -56,3 +57,8 @@
 
 openthread_external_platform =
     "${chip_root}/third_party/openthread/platforms/qpg:libopenthread-qpg"
+
+pw_build_LINK_DEPS = [
+  "$dir_pw_assert:impl",
+  "$dir_pw_log:impl",
+]
diff --git a/src/test_driver/efr32/.gn b/src/test_driver/efr32/.gn
index 7bb85d5..15c1de8 100644
--- a/src/test_driver/efr32/.gn
+++ b/src/test_driver/efr32/.gn
@@ -23,5 +23,11 @@
 default_args = {
   target_cpu = "arm"
   target_os = "freertos"
+
+  pw_build_PIP_CONSTRAINTS =
+      [ "//third_party/connectedhomeip/scripts/constraints.txt" ]
+  pw_build_PIP_REQUIREMENTS =
+      [ "//third_party/connectedhomeip/scripts/requirements.txt" ]
+
   import("//args.gni")
 }
diff --git a/third_party/pigweed/repo b/third_party/pigweed/repo
index 9235aeb..9264e68 160000
--- a/third_party/pigweed/repo
+++ b/third_party/pigweed/repo
@@ -1 +1 @@
-Subproject commit 9235aeb653e684a6f0b7b563965d85c747281a0f
+Subproject commit 9264e6862cc40868a902e5e4ac4e43e2f7eb040d