diff --git a/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch b/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch
index 2401b176e6..c2b76b1ed5 100644
--- a/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch
+++ b/meta/recipes-kernel/lttng/babeltrace2/0001-Make-manpages-multilib-identical.patch
@@ -3,17 +3,20 @@ From: Jeremy Puhlman <jpuhlman@mvista.com>
 Date: Mon, 9 Mar 2020 21:10:35 +0000
 Subject: [PATCH] Make manpages multilib identical
 
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://review.lttng.org/c/babeltrace/+/14222]
+
 Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
+Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
 ---
  doc/man/asciidoc-attrs.conf.in | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/doc/man/asciidoc-attrs.conf.in b/doc/man/asciidoc-attrs.conf.in
-index ad1183f1..e11c7031 100644
+index 88fb13ce2..27858b720 100644
 --- a/doc/man/asciidoc-attrs.conf.in
 +++ b/doc/man/asciidoc-attrs.conf.in
-@@ -1,7 +1,7 @@
+@@ -4,8 +4,8 @@
+
  [attributes]
  # default values
 -system_plugin_path="@LIBDIR@/babeltrace2/plugins"
@@ -24,5 +27,4 @@ index ad1183f1..e11c7031 100644
  enable_debug_info="@ENABLE_DEBUG_INFO_VAL@"
  defrdport=5344
 -- 
-2.24.1
-
+2.34.1
diff --git a/meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch b/meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch
deleted file mode 100644
index 805dde8064..0000000000
--- a/meta/recipes-kernel/lttng/babeltrace2/0001-tests-do-not-run-test-applications-from-.libs.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 582713cc9a013481eeef253195d644020f637ec4 Mon Sep 17 00:00:00 2001
-Message-Id: <582713cc9a013481eeef253195d644020f637ec4.1583403622.git.wallinux@gmail.com>
-From: Anders Wallin <wallinux@gmail.com>
-Date: Thu, 5 Mar 2020 11:20:04 +0100
-Subject: [PATCH] tests: do not run test applications from .libs
-
-Cross compile specific change
-
-Upstream-Status: Inappropriate [oe-core specific]
-
-Signed-off-by: Anders Wallin <wallinux@gmail.com>
----
- tests/lib/test_plugin | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tests/lib/test_plugin b/tests/lib/test_plugin
-index 652c90cc..1f817c50 100755
---- a/tests/lib/test_plugin
-+++ b/tests/lib/test_plugin
-@@ -26,4 +26,4 @@ fi
- # shellcheck source=../utils/utils.sh
- source "$UTILSSH"
- 
--"${BT_TESTS_BUILDDIR}/lib/plugin" "${BT_TESTS_BUILDDIR}/lib/test-plugin-plugins/.libs"
-+"${BT_TESTS_BUILDDIR}/lib/plugin" "${BT_TESTS_BUILDDIR}/lib/test-plugin-plugins"
--- 
-2.25.1
-
diff --git a/meta/recipes-kernel/lttng/babeltrace2/0001-tests-fix-test-applications-in-cpp-common.patch b/meta/recipes-kernel/lttng/babeltrace2/0001-tests-fix-test-applications-in-cpp-common.patch
new file mode 100644
index 0000000000..87f94fb087
--- /dev/null
+++ b/meta/recipes-kernel/lttng/babeltrace2/0001-tests-fix-test-applications-in-cpp-common.patch
@@ -0,0 +1,129 @@
+From 1dc81f272855d94e6a78f7d10ea952745d991aa9 Mon Sep 17 00:00:00 2001
+From: Bin Lan <bin.lan.cn@windriver.com>
+Date: Tue, 11 Mar 2025 17:19:11 +0800
+Subject: [PATCH] Tests: fix test applications in cpp-common are needed to
+ re-build
+
+Test applications in cpp-common directory are needed to re-build when
+calling make check in embedded system. The following error is shown
+when running test applications:
+make[3]: *** No rule to make target 'cpp-common/test-c-string-view.cpp',
+needed by 'cpp-common/test-c-string-view.o'.
+make[3]: *** No rule to make target '../tests/utils/tap/libtap.la',
+needed by 'cpp-common/test-c-string-view'.
+make[3]: *** No rule to make target '../src/common/libcommon.la',
+needed by 'cpp-common/test-c-string-view'.
+make[3]: *** No rule to make target '../src/logging/liblogging.la',
+needed by 'cpp-common/test-c-string-view'.
+...
+make[2]: *** [Makefile:1274: check-TESTS] Error 2
+make[1]: *** [Makefile:1805: check-am] Error 2
+make: *** [Makefile:1033: check-recursive] Error 1
+make: Target 'check' not remade because of errors.
+
+Create some new shell scripts which are used to call test applications
+in cpp-common directory. Then these test applications can run without
+actually examining the source code.
+
+Upstream-Status: Submitted [https://review.lttng.org/c/babeltrace/+/14213]
+
+Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
+---
+ tests/Makefile.am                      |  6 +++---
+ tests/cpp-common/test-c-string-view.sh | 17 +++++++++++++++++
+ tests/cpp-common/test-unicode-conv.sh  | 17 +++++++++++++++++
+ tests/cpp-common/test-uuid.sh          | 17 +++++++++++++++++
+ 4 files changed, 54 insertions(+), 3 deletions(-)
+ create mode 100755 tests/cpp-common/test-c-string-view.sh
+ create mode 100755 tests/cpp-common/test-unicode-conv.sh
+ create mode 100755 tests/cpp-common/test-uuid.sh
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 2a4022bc4..c79b77b32 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -129,9 +129,9 @@ cpp_common_test_unicode_conv_LDADD = \
+ 	$(COMMON_TEST_LDADD)
+ 
+ TESTS_CPP_COMMON = \
+-	cpp-common/test-c-string-view \
+-	cpp-common/test-uuid \
+-	cpp-common/test-unicode-conv
++	cpp-common/test-c-string-view.sh \
++	cpp-common/test-uuid.sh \
++	cpp-common/test-unicode-conv.sh
+ 
+ TESTS_LIB = \
+ 	lib/test-bt-uuid \
+diff --git a/tests/cpp-common/test-c-string-view.sh b/tests/cpp-common/test-c-string-view.sh
+new file mode 100755
+index 000000000..9c2ca5818
+--- /dev/null
++++ b/tests/cpp-common/test-c-string-view.sh
+@@ -0,0 +1,17 @@
++#!/bin/bash
++#
++# SPDX-License-Identifier: GPL-2.0-only
++#
++# Copyright (C) 2025 Bin Lan <bin.lan.cn@windriver.com>
++#
++
++if [ -n "${BT_TESTS_SRCDIR:-}" ]; then
++	UTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh"
++else
++	UTILSSH="$(dirname "$0")/../utils/utils.sh"
++fi
++
++# shellcheck source=../utils/utils.sh
++source "$UTILSSH"
++
++"${BT_TESTS_BUILDDIR}/cpp-common/test-c-string-view" "$BT_TESTS_BT2_BIN"
+diff --git a/tests/cpp-common/test-unicode-conv.sh b/tests/cpp-common/test-unicode-conv.sh
+new file mode 100755
+index 000000000..df490b2eb
+--- /dev/null
++++ b/tests/cpp-common/test-unicode-conv.sh
+@@ -0,0 +1,17 @@
++#!/bin/bash
++#
++# SPDX-License-Identifier: GPL-2.0-only
++#
++# Copyright (C) 2025 Bin Lan <bin.lan.cn@windriver.com>
++#
++
++if [ -n "${BT_TESTS_SRCDIR:-}" ]; then
++	UTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh"
++else
++	UTILSSH="$(dirname "$0")/../utils/utils.sh"
++fi
++
++# shellcheck source=../utils/utils.sh
++source "$UTILSSH"
++
++"${BT_TESTS_BUILDDIR}/cpp-common/test-unicode-conv" "$BT_TESTS_BT2_BIN"
+diff --git a/tests/cpp-common/test-uuid.sh b/tests/cpp-common/test-uuid.sh
+new file mode 100755
+index 000000000..8c65daa94
+--- /dev/null
++++ b/tests/cpp-common/test-uuid.sh
+@@ -0,0 +1,17 @@
++#!/bin/bash
++#
++# SPDX-License-Identifier: GPL-2.0-only
++#
++# Copyright (C) 2025 Bin Lan <bin.lan.cn@windriver.com>
++#
++
++if [ -n "${BT_TESTS_SRCDIR:-}" ]; then
++	UTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh"
++else
++	UTILSSH="$(dirname "$0")/../utils/utils.sh"
++fi
++
++# shellcheck source=../utils/utils.sh
++source "$UTILSSH"
++
++"${BT_TESTS_BUILDDIR}/cpp-common/test-uuid" "$BT_TESTS_BT2_BIN"
+-- 
+2.34.1
+
diff --git a/meta/recipes-kernel/lttng/babeltrace2/0001-tests-set-the-correct-plugin-directory.patch b/meta/recipes-kernel/lttng/babeltrace2/0001-tests-set-the-correct-plugin-directory.patch
new file mode 100644
index 0000000000..7ac7582ad7
--- /dev/null
+++ b/meta/recipes-kernel/lttng/babeltrace2/0001-tests-set-the-correct-plugin-directory.patch
@@ -0,0 +1,30 @@
+From 32494b1726a881883cb6d317ab76d1ec3f1fa740 Mon Sep 17 00:00:00 2001
+From: Bin Lan <bin.lan.cn@windriver.com>
+Date: Wed, 5 Mar 2025 10:51:11 +0800
+Subject: [PATCH] tests: set the correct directory of plugin shared library
+
+The plugin shared libraries are put in test-plugins-plugins/.libs when 
+building in a host. test-plugins-plugins/.libs is not exist when cross 
+build. The plugin shared libraries are put in test-plugins-plugins 
+directory when cross build.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Bin Lan <bin.lan.cn@windriver.com>
+---
+ tests/lib/test-plugins.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/lib/test-plugins.sh b/tests/lib/test-plugins.sh
+index f83e42baa..939236393 100755
+--- a/tests/lib/test-plugins.sh
++++ b/tests/lib/test-plugins.sh
+@@ -14,4 +14,4 @@ fi
+ # shellcheck source=../utils/utils.sh
+ source "$UTILSSH"
+ 
+-"${BT_TESTS_BUILDDIR}/lib/test-plugins" "${BT_TESTS_BUILDDIR}/lib/test-plugins-plugins/.libs"
++"${BT_TESTS_BUILDDIR}/lib/test-plugins" "${BT_TESTS_BUILDDIR}/lib/test-plugins-plugins"
+-- 
+2.34.1
+
diff --git a/meta/recipes-kernel/lttng/babeltrace2/run-ptest b/meta/recipes-kernel/lttng/babeltrace2/run-ptest
index 71a9c81bfb..a0bf33b75d 100755
--- a/meta/recipes-kernel/lttng/babeltrace2/run-ptest
+++ b/meta/recipes-kernel/lttng/babeltrace2/run-ptest
@@ -4,7 +4,7 @@
 
 # Without --ignore-exit, the tap harness causes any FAILs within a
 # test plan to raise ERRORs; this is just noise.
-makeargs="LOG_DRIVER_FLAGS=--ignore-exit abs_top_srcdir=$PWD abs_top_builddir=$PWD GREP=grep SED=sed PYTHON=python3"
+makeargs="LOG_DRIVER_FLAGS=--ignore-exit abs_top_srcdir=$PWD abs_top_builddir=$PWD"
 
 exec 2> error.log
 make -C tests -k -s $makeargs $target
@@ -16,4 +16,4 @@ if [ -e tests/test-suite.log ]; then
     cat tests/test-suite.log
 fi
 
-exit $exitcode
\ No newline at end of file
+exit $exitcode
diff --git a/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb b/meta/recipes-kernel/lttng/babeltrace2_2.1.0.bb
similarity index 69%
rename from meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb
rename to meta/recipes-kernel/lttng/babeltrace2_2.1.0.bb
index 6a0052f779..648588d233 100644
--- a/meta/recipes-kernel/lttng/babeltrace2_2.0.6.bb
+++ b/meta/recipes-kernel/lttng/babeltrace2_2.1.0.bb
@@ -2,17 +2,18 @@ SUMMARY = "Babeltrace2 - Trace Format Babel Tower"
 DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log."
 HOMEPAGE = "http://babeltrace.org/"
 BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace"
-LICENSE = "MIT & GPL-2.0-only & LGPL-2.1-only & BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a6a458c13f18385b7bc5069a6d7b176e"
+LICENSE = "MIT & GPL-2.0-only & LGPL-2.1-only & BSD-2-Clause & BSD-4-Clause & GPL-3.0-or-later & CC-BY-SA-4.0 & PSF-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f6b015e4f388d6e78adb1b1f9a887d06"
 
 DEPENDS = "glib-2.0 util-linux popt bison-native flex-native"
 
-SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.0;protocol=https \
+SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.1;protocol=https \
            file://run-ptest \
-           file://0001-tests-do-not-run-test-applications-from-.libs.patch \
            file://0001-Make-manpages-multilib-identical.patch \
+           file://0001-tests-fix-test-applications-in-cpp-common.patch \
+           file://0001-tests-set-the-correct-plugin-directory.patch \
            "
-SRCREV = "0a6632f77801f3218a288604c646f8a39cb0d2c4"
+SRCREV = "e61d41ff3c3ac6a123930d4e60cf710ff9ea18e0"
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>2(\.\d+)+)$"
 
 S = "${WORKDIR}/git"
@@ -33,6 +34,14 @@ LDFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld ptest', '-fuse-ld
 # coreutils since we need full mktemp
 RDEPENDS:${PN}-ptest += "bash gawk python3 make grep coreutils findutils"
 
+do_configure:append() {
+    # when doing cross compile, the path ${B}/src/plugins/ctf/common/src/metadata/tsdl
+    # is not created by the babeltrace2 build system. It is need when generating
+    # parser.cpp by executing /bin/bash ../../git/config/ylwrap.
+    # So make this directory after configuration.
+    mkdir -p ${B}/src/plugins/ctf/common/src/metadata/tsdl
+}
+
 do_compile_ptest () {
     make -C tests all
 }
@@ -51,6 +60,12 @@ do_install_ptest () {
 	     -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
 	find "${S}/tests/$d" -maxdepth 1 -name *.expect \
 	     -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
+	find "${S}/tests/$d" -maxdepth 1 -name *.ref \
+	     -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
+	find "${S}/tests/$d" -maxdepth 1 -name *.mctf \
+	     -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
+	find "${S}/tests/$d" -maxdepth 1 -name *.json \
+	     -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
     done
     install -d "${D}${PTEST_PATH}/tests/data/ctf-traces/"
     cp -a ${S}/tests/data/ctf-traces/* ${D}${PTEST_PATH}/tests/data/ctf-traces/
@@ -92,6 +107,16 @@ do_install_ptest () {
 
     # Remove architechture specific testfiles
     rm -rf ${D}${PTEST_PATH}/tests/data/plugins/flt.lttng-utils.debug-info/*
+
+    # Set the correct environment variables when running embedded environment
+    envsh=${D}${PTEST_PATH}/tests/utils/env.sh
+    sed -i "/BT_TESTS_SRCDIR/c\_set_var_def BT_TESTS_SRCDIR '${PTEST_PATH}/tests'" $envsh
+    sed -i "/BT_TESTS_BUILDDIR/c\_set_var_def BT_TESTS_BUILDDIR '${PTEST_PATH}/tests'" $envsh
+    sed -i "/BT_TESTS_AWK_BIN/c\_set_var_def BT_TESTS_AWK_BIN 'gawk'" $envsh
+    sed -i "/BT_TESTS_GREP_BIN/c\_set_var_def BT_TESTS_GREP_BIN 'grep'" $envsh
+    sed -i "/BT_TESTS_PYTHON_BIN/c\_set_var_def BT_TESTS_PYTHON_BIN 'python3'" $envsh
+    sed -i "/BT_TESTS_SED_BIN/c\_set_var_def BT_TESTS_SED_BIN 'sed'" $envsh
+    sed -i "/BT_TESTS_CC_BIN/c\_set_var_def BT_TESTS_CC_BIN ''" $envsh
 }
 
 do_install:append:class-nativesdk() {
