diff --git a/uci-bcm/Makefile b/uci-bcm/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..f507a395c94a853c0b0584850ce770df27ebd74c
--- /dev/null
+++ b/uci-bcm/Makefile
@@ -0,0 +1,60 @@
+#
+# Copyright (C) 2008-2014 OpenWrt.org
+# Copyright (C) 2016 LEDE project
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=uci-bcm
+PKG_RELEASE:=6
+
+PKG_SOURCE_URL=$(PROJECT_GIT)/project/uci.git
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_DATE=2021-10-22
+PKG_SOURCE_VERSION:=f84f49f00fb70364f58b4cce72f1796a7190d370
+PKG_MIRROR_HASH:=9f4747a029976b43fcea9919643ce71e587e515edc21b280163f7262360d847f
+
+PKG_LICENSE:=LGPL-2.1
+PKG_LICENSE_FILES:=
+
+PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
+TARGET_CC_NOCACHE := "$(subst ",,$(CONFIG_BRCM_ALT_TOOLCHAIN_BASE)/$(CONFIG_BRCM_ALT_ARMSFP_TOOLCHAIN_TOPDIR)/bin/$(CONFIG_BRCM_ALT_ARMSFP_TOOLCHAIN_PREFIX)-gcc)"
+TARGET_CC := "$(subst ",,$(CONFIG_BRCM_ALT_TOOLCHAIN_BASE)/$(CONFIG_BRCM_ALT_ARMSFP_TOOLCHAIN_TOPDIR)/bin/$(CONFIG_BRCM_ALT_ARMSFP_TOOLCHAIN_PREFIX)-gcc)"
+CMAKE_NM := "$(subst ",,$(CONFIG_BRCM_ALT_TOOLCHAIN_BASE)/$(CONFIG_BRCM_ALT_ARMSFP_TOOLCHAIN_TOPDIR)/bin/$(CONFIG_BRCM_ALT_ARMSFP_TOOLCHAIN_PREFIX)-nm)"
+CMAKE_RANLIB:="$(subst ",,$(CONFIG_BRCM_ALT_TOOLCHAIN_BASE)/$(CONFIG_BRCM_ALT_ARMSFP_TOOLCHAIN_TOPDIR)/bin/$(CONFIG_BRCM_ALT_ARMSFP_TOOLCHAIN_PREFIX)-ranlib)"
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+
+# set to 1 to enable debugging
+DEBUG=
+
+define Package/$(PKG_NAME)
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=C library for the Unified Configuration Interface (UCI) BCM
+  DEPENDS:=+libubox +TARGET_brcmbca:bcmkernel
+  ABI_VERSION:=20130104
+  TARGET_CFLAGS := -I$(STAGING_DIR)/usr/include/broadcom
+  TARGET_CPPFLAGS :=
+  TARGET_CXXFLAGS :=
+  EXTRA_CFLAGS :=
+  TARGET_LDFLAGS := -L $(STAGING_DIR)/usr/lib/broadcom
+endef
+
+
+CMAKE_OPTIONS += \
+	-DLUAPATH=/usr/lib/lua \
+	-DBUILD_LUA=OFF \
+	$(if $(DEBUG),-DUCI_DEBUG=ON)
+
+define Package/$(PKG_NAME)/install
+	mkdir -p $(1)/usr/lib/broadcom
+	$(CP) $(PKG_BUILD_DIR)/libuci.so* $(1)/usr/lib/broadcom
+endef
+
+$(eval $(call BuildPackage,$(PKG_NAME)))
diff --git a/uci-bcm/patches/0001-broadcom-includes.patch b/uci-bcm/patches/0001-broadcom-includes.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d82e77d016a70feddc4c1a9706998bfb1d679346
--- /dev/null
+++ b/uci-bcm/patches/0001-broadcom-includes.patch
@@ -0,0 +1,25 @@
+From 05915fb94045b459879d2d6ee5b4857520319a29 Mon Sep 17 00:00:00 2001
+From: Lukasz Kotasa <lukasz.kotasa@iopsys.eu>
+Date: Fri, 10 Feb 2023 09:15:29 +0100
+Subject: [PATCH] Broadcom includes
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 50e7f51..110da21 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -23,7 +23,7 @@ FIND_PATH(ubox_include_dir libubox/usock.h)
+ 
+ CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/uci_config.h.in ${CMAKE_SOURCE_DIR}/uci_config.h )
+ 
+-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${ubox_include_dir})
++INCLUDE_DIRECTORIES(${ubox_include_dir}/bcm963xx)
+ 
+ SET(LIB_SOURCES libuci.c file.c util.c delta.c parse.c blob.c)
+ 
+-- 
+2.34.1
+