subtree updates

meta-openembedded: f3cdc9d7ee..0474e0b870:
  Alexander Amelkin (1):
        ipmitool: Update links

  Bhargav Das (1):
        python3-libevdev: Add recipe for python libevdev module.

  Changqing Li (1):
        redis: upgrade 6.2.11 -> 6.2.12

  Chen Qi (1):
        frr: add CVE_PRODUCT

  Diego Dassie (2):
        paho-mqtt-c: Disable building tests
        paho-mqtt-c: Improve performance

  Fabio Estevam (1):
        lvgl: lvgl-demo-fb: Inherit features_check

  Johannes Kauffmann (2):
        open62541: allow overriding encryption providers
        open62541: disable warnings as errors

  Jun Nie (3):
        libcbor: Add initial support
        python3-pefile: Add initial support
        python3-uswid: Add initial support

  Khem Raj (27):
        gitpkgv: Fix python deprecation warning
        python3-pyzstd: Disable LTO on clang+arm
        libftdi: Remove sysroot paths from .cmake files
        libencode-perl: Remove buildpaths from generated .exh files
        libcdio: Drop need for LIBCDIO_SOURCE_PATH
        enca: Remove buildpaths from target scripts
        libirecovery: Add missing build dependency on readline
        usbmuxd: Remove recipe for 1.1.1
        usbmuxd: Updgrade to latest on master branch
        packagegroup-meta-oe: Add kpatch for glibc + x86_64 only
        packagegroup-meta-oe: Remove minicoredumper-ptest for musl
        libimobiledevice: Delete recipe for 1.3.0
        libimobiledevice: Update to latest tip
        libimobiledevice: Fix build with clang
        idevicerestore: Update to latest on master branch
        libpaper: Add recipe
        psutils: Add recipe
        nodejs: Upgrade to 18.16.0
        python3-pylint: Fix missing deps for ptests
        etcd: Inherit missing features_check
        fftw: Remove hardcoded sysroot into binaries
        lmdb: Pass CFLAGS to Makefile
        squid: Remove buildpaths from generated binaries
        libiio: Do not generate lineinfo in lex/yacc generated files
        php: Remove buildpaths from scripts and generated headers
        uw-imap: Pass CFLAGS from environment
        libmad: Add a patch to pass cflags to build

  Marcel Ziswiler (1):
        libusbgx: fix device hot-plug use case

  Marek Vasut (7):
        lvgl: Upgrade lvgl to 8.3.7 and lv-driver to 8.3.0
        lvgl: Activate custom tick implementation
        lvgl: Add configurable color depth, default to 32bpp
        lvgl: Support both fbdev and wayland backends
        lvgl: Update lvgl-demo-fb to 8.3.0
        lvgl: Upgrade dialog-lvgl to next/main version
        lvgl: Add dependency on fbdev into lvgl-demo-fb DISTRO_FEATURES

  Markus Volk (12):
        xdg-desktop-portal-wlr: update 0.6.0 -> 0.7.0
        python3-pillow: add libxcb to RDEPENDS for x11
        adw-gtk3: update 4.5 -> 4.6
        paprefs: add recipe
        imaagemagick: update 7.1.1-5 -> 7.1.1-8
        fuse3: update 3.12.0 -> 3.14.1
        gnome-software: update 44.0 -> 44.1
        gjs: update 1.75.1 -> 1.76.0
        evince: update 44.0 -> 44.1
        gdm: update 44.0 -> 44.1
        xdg-desktop-portal-gnome: update 44.0 -> 44.1
        libcamera: update 0.0.4 -> 0.0.5

  Martin Jansa (18):
        glfw: respect DISTRO_FEATURES when enabling x11 in default PACKAGECONFIG and return it to REQUIRED_DISTRO_FEATURES
        libreport: add dependency on libarchive
        libxmlb: add missing dependency on glib-2.0 and xz
        geoclue: fix build without gobject-introspection-data
        appstream: fix build without gobject-introspection-data
        ostree: fix build without gobject-introspection-data
        rdfind: fix build with -Werror=return-type
        spice-gtk: respect gobject-introspection-data
        cpulimit: fix do_install with multilib
        libnfs: fix installed-vs-shipped issues with multilib
        btrfsmaintenance: install to ${datadir}/${BPN}
        libtomcrypt: pass LIBPATH to fix installed-vs-shipped with multilib
        nanopb: fix installed-vs-shipped with multilib
        nv-codec-headers: fix installed-vs-shipped with multilib
        zfs: fix installation paths for multilib
        poppler: add dependency on glib-2.0-native
        paprefs: add x11 to REQUIRED_DISTRO_FEATURES
        etcd: don't hardcode /usr/lib in do_install

  Matija Tudan (1):
        serial: add recipe for version 1.2.1

  Ming Liu (4):
        libusbgx: uprev to the latest commit
        libusbgx: fix some systemd service conditions
        libusbgx: drop hard-coded /usr/bin,/etc
        libusbgx: check scripts in /etc/usbgx.d

  Mingli Yu (1):
        minicoredumper: correct the sysvinit service file attribute

  Petr Gotthard (4):
        strongswan: add PACKAGECONFIG for the NetworkManager module
        openfortivpn: add new recipe
        networkmanager-fortisslvpn: add new recipe
        networkmanager-openconnect: add new recipe

  Ross Burton (6):
        v4l-utils: do out-of-tree builds
        python3-ninja: simplify recipe
        libisofs: add new recipe
        libburn: move to meta-filesystems
        libisoburn: add new recipe
        xorriso: remove obsolete recipe

  Trevor Gamblin (9):
        python3-pytest-mock: Add recipe
        python3-tomlkit: Add recipe
        ptest-packagelists-meta-python: Add new tests
        python3-platformdirs: Add recipe
        python3-pylint: upgrade 2.14.5 -> 2.17.3
        python3-pylint: add ptest
        ptest-packagelists-meta-python: Add new tests
        python3-pylint: upgrade 2.17.3 -> 2.17.4
        python3-pylint: omit failing pickle test

  Vasileios Anagnostopoulos (1):
        asio: update to 1.28.0

  Wang Mingyu (74):
        abseil-cpp: upgrade 20230125.2 -> 20230125.3
        appstream: upgrade 0.16.1 -> 0.16.2
        babl: upgrade 0.1.104 -> 0.1.106
        audit: upgrade 3.1 -> 3.1.1
        boost-sml: upgrade 1.1.6 -> 1.1.8
        ctags: upgrade 6.0.20230416.0 -> 6.0.20230430.0
        eog: upgrade 44.0 -> 44.1
        gspell: upgrade 1.12.0 -> 1.12.1
        etcd-cpp-apiv3: upgrade 0.14.2 -> 0.14.3
        googlebenchmark: upgrade 1.7.1 -> 1.8.0
        hwdata: upgrade 0.369 -> 0.370
        libbpf: upgrade 1.1.0 -> 1.2.0
        iozone3: upgrade 492 -> 506
        libadwaita: upgrade 1.3.1 -> 1.3.2
        libcgi-perl: upgrade 4.56 -> 4.57
        libjs-jquery-cookie: upgrade 3.0.1 -> 3.0.5
        libmodule-build-tiny-perl: upgrade 0.043 -> 0.045
        log4cpp: upgrade 1.1.3 -> 1.1.4
        nautilus: upgrade 44.0 -> 44.1
        makedumpfile: upgrade 1.7.2 -> 1.7.3
        mg: upgrade 20230406 -> 20230501
        python3-yarl: upgrade 1.8.2 -> 1.9.2
        python3-alembic: upgrade 1.10.3 -> 1.10.4
        python3-cassandra-driver: upgrade 3.26.0 -> 3.27.0
        python3-can: upgrade 4.1.0 -> 4.2.0
        python3-astroid: upgrade 2.15.3 -> 2.15.4
        python3-argcomplete: upgrade 3.0.5 -> 3.0.8
        python3-coverage: upgrade 7.2.3 -> 7.2.5
        python3-imageio: upgrade 2.27.0 -> 2.28.1
        python3-gast: upgrade 0.5.3 -> 0.5.4
        python3-langtable: upgrade 0.0.61 -> 0.0.62
        python3-flask-socketio: upgrade 5.3.3 -> 5.3.4
        python3-elementpath: upgrade 4.1.1 -> 4.1.2
        python3-nocasedict: upgrade 2.0.0 -> 2.0.1
        python3-protobuf: upgrade 4.22.3 -> 4.22.4
        python3-pint: upgrade 0.20.1 -> 0.21
        python3-pulsectl: upgrade 22.3.2 -> 23.5.0
        python3-pika: upgrade 1.3.1 -> 1.3.2
        python3-pymisp: upgrade 2.4.170.1 -> 2.4.170.2
        python3-pyudev: upgrade 0.24.0 -> 0.24.1
        python3-regex: upgrade 2023.3.23 -> 2023.5.5
        python3-rich: upgrade 13.3.4 -> 13.3.5
        python3-smpplib: upgrade 2.2.2 -> 2.2.3
        python3-sentry-sdk: upgrade 1.20.0 -> 1.22.1
        python3-sqlalchemy: upgrade 2.0.9 -> 2.0.12
        python3-termcolor: upgrade 2.2.0 -> 2.3.0
        python3-twitter: upgrade 4.13.0 -> 4.14.0
        python3-web3: upgrade 6.2.0 -> 6.3.0
        tracker: upgrade 3.5.0 -> 3.5.1
        python3-zeroconf: upgrade 0.56.0 -> 0.62.0
        python3-xstatic: upgrade 1.0.2 -> 1.0.3
        python3-requests-toolbelt: upgrade 0.10.1 -> 1.0.0
        libimobiledevice-glue: SRCREV bump d2ff796..114098d
        libplist: upgrade 2.2.0 -> 2.3.0
        ctags: upgrade 6.0.20230430.0 -> 6.0.20230507.0
        libnet-dns-perl: upgrade 1.37 -> 1.38
        libdivecomputer: upgrade 0.7.0 -> 0.8.0
        python3-platformdirs: upgrade 3.5.0 -> 3.5.1
        python3-sympy: upgrade 1.11.1 -> 1.12
        python3-google-auth: upgrade 2.17.3 -> 2.18.0
        php: upgrade 8.2.5 -> 8.2.6
        postgresql: upgrade 15.2 -> 15.3
        python3-protobuf: upgrade 4.22.4 -> 4.23.0
        python3-pulsectl: upgrade 23.5.0 -> 23.5.1
        python3-pymisp: upgrade 2.4.170.2 -> 2.4.171
        python3-pyjwt: upgrade 2.6.0 -> 2.7.0
        python3-redis: upgrade 4.5.4 -> 4.5.5
        python3-pytest-xdist: upgrade 3.2.1 -> 3.3.0
        python3-sentry-sdk: upgrade 1.22.1 -> 1.22.2
        python3-typeguard: upgrade 3.0.2 -> 4.0.0
        python3-sqlalchemy: upgrade 2.0.12 -> 2.0.13
        python3-websockets: upgrade 11.0.2 -> 11.0.3
        xterm: upgrade 379 -> 380
        wavpack: upgrade 4.60.1 -> 5.1.0

  Xiangyu Chen (1):
        pahole: fix native package build error

  ojayanth (2):
        etcd: systemd unit support to start existing etcd node
        etcd: add systemd unit support for clustering

poky: 76cec94fad..35e5d29a7d:
  Alexander Kanavin (1):
        gcr: consider all versions, not only x.even.y

  Andrew Jeffery (1):
        Revert "ipk: Decode byte data to string in manifest handling"

  Anuj Mittal (2):
        gstreamer1.0: upgrade 1.22.0 -> 1.22.2
        vte: upgrade 0.72.0 -> 0.72.1

  Chen Qi (1):
        sqlite3: update CVE_PRODUCT

  Frederic Martinsons (1):
        ptest-cargo.bbclass: add the possibility to define test arguments

  Khem Raj (3):
        musl: Update to 1.2.4 release
        cpio: Run ptests under ptest user
        python3-requests: Upgrade to 2.30.0

  Luca Ceresoli (2):
        ref-manual: classes: kernel: remove incorrect sentence opening
        ref-manual: classes: kernel: document automatic defconfig usage

  Martin Jansa (1):
        populate_sdk_base.bbclass: respect MLPREFIX for ptest-pkgs's ptest-runner

  Michael Opdenacker (2):
        migration-guides: start of 4.3 migration and release notes
        ref-manual: document FIT_ADDRESS_CELLS

  Paul Gortmaker (1):
        yocto-bsp: drop MIPS Edgerouter support

  Qiu Tingting (1):
        e2fsprogs: fix ptest bug for second running

  Richard Purdie (5):
        migration/release-notes-4.3: Add extra notes
        qemu: Update ppc instruction fix to match revised upstream version
        glib-networking: Add test retry to avoid failures
        glib-networking: Correct glib error handling in test patch
        qemu: Further updates to the ppc patch after upstream discussion

  Ross Burton (6):
        gdb: fix crashes when debugging threads with Arm Pointer Authentication enabled
        Revert "ffmpeg: move ffmpeg config into packageconfig"
        ffmpeg: add v4l2 PACKAGECONFIG
        python3: use libedit instead of readline
        python3: clean up PACKAGECONFIG
        python3: use system expat

  Tim Orling (2):
        python3-urllib3: upgrade 1.26.15 -> 2.0.2
        python3-attrs: upgrade 22.2.0 -> 23.1.0

  Trevor Gamblin (3):
        python3-trove-classifiers: Add recipe
        python3-hatchling: upgrade 1.13.0 -> 1.14.1
        python3-calver: Add recipe

  Zang Ruochen (1):
        elfutils: upgrade 0.188 -> 0.189

  nikhil (1):
        tiff: Remove unused patch from tiff

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I5304cb7a7ca3c09a110f52fa5b2844f5f00f4851
diff --git a/meta-openembedded/meta-oe/recipes-support/appstream/appstream_0.16.1.bb b/meta-openembedded/meta-oe/recipes-support/appstream/appstream_0.16.2.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-support/appstream/appstream_0.16.1.bb
rename to meta-openembedded/meta-oe/recipes-support/appstream/appstream_0.16.2.bb
index 50d8cdb..1ba4521 100644
--- a/meta-openembedded/meta-oe/recipes-support/appstream/appstream_0.16.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/appstream/appstream_0.16.2.bb
@@ -21,11 +21,11 @@
 
 inherit meson gobject-introspection gettext gtk-doc pkgconfig vala
 
-GIR_MESON_OPTION = ""
+GIR_MESON_OPTION = "gir"
 
 SRC_URI = "https://www.freedesktop.org/software/appstream/releases/AppStream-${PV}.tar.xz"
 SRC_URI:append:class-target = " file://0001-fix-crosscompile.patch"
-SRC_URI[sha256sum] = "77e274e163db1f0a1bec8f4134b1d0f31e9c0a8c54cd37f724a7d30a71cf41d2"
+SRC_URI[sha256sum] = "f9cb80bd388fbf06be268afa7f2d65863c85d605ad874b905094f3982d03f232"
 
 S = "${WORKDIR}/AppStream-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/asio/asio_1.20.0.bb b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.28.0.bb
similarity index 69%
rename from meta-openembedded/meta-oe/recipes-support/asio/asio_1.20.0.bb
rename to meta-openembedded/meta-oe/recipes-support/asio/asio_1.28.0.bb
index cedcf9f..ae72126 100644
--- a/meta-openembedded/meta-oe/recipes-support/asio/asio_1.20.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/asio/asio_1.28.0.bb
@@ -9,17 +9,18 @@
 
 DEPENDS = "openssl"
 
-SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
+SRC_URI = " \
+    ${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2 \
+    file://0001-Add-the-pkgconfigdir-location.patch \
+"
 
 inherit autotools
 
 ALLOW_EMPTY:${PN} = "1"
 
-LIC_FILES_CHKSUM = "file://COPYING;md5=416f4cc4f79551b690babb14ef1a5799"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ff668366bbdb687b6029d33a5fe4b999"
 
-SRC_URI[sha256sum] = "204374d3cadff1b57a63f4c343cbadcee28374c072dc04b549d772dbba9f650c"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/asio/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "d0ddc2361abd2f4c823e970aaf8e28b4b31ab21b1a68af16b114fc093661e232"
 
 PACKAGECONFIG ??= "boost"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/asio/files/0001-Add-the-pkgconfigdir-location.patch b/meta-openembedded/meta-oe/recipes-support/asio/files/0001-Add-the-pkgconfigdir-location.patch
new file mode 100644
index 0000000..3f93e7e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/asio/files/0001-Add-the-pkgconfigdir-location.patch
@@ -0,0 +1,30 @@
+From 248e87869d748cfb72d3a5d3b2b91ad178172e30 Mon Sep 17 00:00:00 2001
+From: Vasileios Anagnostopoulos <anagnwstopoulos@hotmail.com>
+Date: Tue, 9 May 2023 12:48:29 +0200
+Subject: [PATCH] Add the pkgconfigdir location
+
+This change is necessary, because while building asio in yocto the
+compilation is failing and is complaining because the variable is
+undefined
+
+Signed-off-by: Vasileios Anagnostopoulos <anagnwstopoulos@hotmail.com>
+Upstream status: Submitted [https://github.com/chriskohlhoff/asio/pull/1294]
+---
+ asio/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index b7760851..bc4f75b3 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,6 +1,7 @@
+ AUTOMAKE_OPTIONS = foreign dist-bzip2 dist-zip
+ 
+ pkgconfig_DATA = asio.pc
++pkgconfigdir = $(libdir)/pkgconfig
+ 
+ SUBDIRS = include src
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb b/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb
index c83181c..a06122a 100644
--- a/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb
@@ -9,10 +9,10 @@
 
 DEPENDS += "boost qemu-native"
 
-PV = "1.1.6"
+PV = "1.1.8"
 
 SRC_URI = "git://github.com/boost-ext/sml.git;protocol=https;branch=master"
-SRCREV = "23e9a24e434cac9922039cbb43ca54ab70bef72c"
+SRCREV = "8eb63a8b77bb662075dd36b316e53f75e605fd0f"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/cpulimit/cpulimit_0.2.bb b/meta-openembedded/meta-oe/recipes-support/cpulimit/cpulimit_0.2.bb
index 86a58be..58e4fd6 100644
--- a/meta-openembedded/meta-oe/recipes-support/cpulimit/cpulimit_0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/cpulimit/cpulimit_0.2.bb
@@ -4,7 +4,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86c1c0d961a437e529db93aa3bb32dc4"
 SRCREV ?= "f4d2682804931e7aea02a869137344bb5452a3cd"
 
-SRC_URI = "git://g...@github.com/opsengine/cpulimit.git;protocol=https;branch=master \
+SRC_URI = "git://github.com/opsengine/cpulimit.git;protocol=https;branch=master \
            file://0001-Remove-sys-sysctl.h-and-add-missing-libgen.h-include.patch \
            "
 
@@ -15,7 +15,7 @@
 }
 do_install() {
     install -d ${D}${sbindir}
-    install -m 0755 ${B}/src/${PN} ${D}${sbindir}/
+    install -m 0755 ${B}/src/${BPN} ${D}${sbindir}/
 }
 
 CFLAGS += "-D_GNU_SOURCE ${LDFLAGS}"
diff --git a/meta-openembedded/meta-oe/recipes-support/enca/enca/0001-Do-not-use-MKTEMP_PROG-in-cross-build.patch b/meta-openembedded/meta-oe/recipes-support/enca/enca/0001-Do-not-use-MKTEMP_PROG-in-cross-build.patch
new file mode 100644
index 0000000..32fa239
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/enca/enca/0001-Do-not-use-MKTEMP_PROG-in-cross-build.patch
@@ -0,0 +1,30 @@
+From c6a59d512706978e8c67f9a2d84ec650f8763368 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 8 May 2023 18:02:52 -0700
+Subject: [PATCH] Do not use $MKTEMP_PROG in cross-build
+
+$MKTEMP_PROG points to native location which could be absolute path that
+wont exist on target rootfs. Therefore use it from PATH
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 4852a2f..d23b384 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -186,7 +186,7 @@ ye_PATH_LOCALE_ALIAS
+ 
+ dnl Random filename generation in scripts
+ if test -n "$MKTEMP_PROG"; then
+-  SHELL_RANDOM_FILENAME='`'$MKTEMP_PROG' /tmp/enca-$$-XXXXXXXX`'
++  SHELL_RANDOM_FILENAME='`mktemp /tmp/enca-$$-XXXXXXXX`'
+ else
+   SHELL_RANDOM_FILENAME='/tmp/enca-$$-$RANDOM'
+ fi
+-- 
+2.40.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/enca/enca_1.19.bb b/meta-openembedded/meta-oe/recipes-support/enca/enca_1.19.bb
index eed0ad1..774f05f 100644
--- a/meta-openembedded/meta-oe/recipes-support/enca/enca_1.19.bb
+++ b/meta-openembedded/meta-oe/recipes-support/enca/enca_1.19.bb
@@ -10,8 +10,8 @@
 SRC_URI = "https://dl.cihar.com/enca/enca-${PV}.tar.gz \
     file://dont-run-tests.patch \
     file://makefile-remove-tools.patch \
-    file://libenca-003-iconv.patch "
-
+    file://libenca-003-iconv.patch \
+    file://0001-Do-not-use-MKTEMP_PROG-in-cross-build.patch"
 SRC_URI[sha256sum] = "4c305cc59f3e57f2cfc150a6ac511690f43633595760e1cb266bf23362d72f8a"
 
 inherit autotools
diff --git a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
index cb45e2b..1fead4d 100644
--- a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
@@ -55,6 +55,7 @@
 do_compile() {
     for lib in fftw fftwl fftwf; do
         cd ${WORKDIR}/build-$lib
+        sed -i -e 's|${TOOLCHAIN_OPTIONS}||g' config.h
         autotools_do_compile
     done
 }
diff --git a/meta-openembedded/meta-oe/recipes-support/googlebenchmark/googlebenchmark_1.7.1.bb b/meta-openembedded/meta-oe/recipes-support/googlebenchmark/googlebenchmark_1.8.0.bb
similarity index 89%
rename from meta-openembedded/meta-oe/recipes-support/googlebenchmark/googlebenchmark_1.7.1.bb
rename to meta-openembedded/meta-oe/recipes-support/googlebenchmark/googlebenchmark_1.8.0.bb
index 1a56563..209f51e 100644
--- a/meta-openembedded/meta-oe/recipes-support/googlebenchmark/googlebenchmark_1.7.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/googlebenchmark/googlebenchmark_1.8.0.bb
@@ -5,7 +5,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
 
 SRC_URI = "git://github.com/google/benchmark.git;protocol=https;branch=main"
-SRCREV = "d572f4777349d43653b21d6c2fc63020ab326db2"
+SRCREV = "2dd015dfef425c866d9a43f2c67d8b52d709acb6"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.369.bb b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.370.bb
similarity index 91%
rename from meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.369.bb
rename to meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.370.bb
index c20e243..56d4253 100644
--- a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.369.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.370.bb
@@ -5,7 +5,7 @@
 LICENSE = "GPL-2.0-or-later | XFree86-1.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
 
-SRCREV = "ced93f9d1c15e45e35378e82b8da96027e58174a"
+SRCREV = "21cb47beb1716545b25dfe8ae1b9e079c73b85d9"
 SRC_URI = "git://github.com/vcrhonek/${BPN}.git;branch=master;protocol=https"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/idevicerestore/idevicerestore_git.bb b/meta-openembedded/meta-oe/recipes-support/idevicerestore/idevicerestore_git.bb
index d7c76a5..2a0a129 100644
--- a/meta-openembedded/meta-oe/recipes-support/idevicerestore/idevicerestore_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/idevicerestore/idevicerestore_git.bb
@@ -10,7 +10,7 @@
 
 PV = "1.0.1+git${SRCPV}"
 
-SRCREV = "7d622d916be16f2df5a72bf53a42f3a326bbfaa4"
+SRCREV = "163a1647dedb7ca4656c0f072e4733573f9f982b"
 SRC_URI = "git://github.com/libimobiledevice/idevicerestore;protocol=https;branch=master"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb
index 07434c0..e59b511 100644
--- a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb
@@ -10,23 +10,19 @@
 DEPENDS = "lcms bzip2 jpeg libpng tiff zlib fftw freetype libtool"
 
 BASE_PV := "${PV}"
-PV .= "-5"
+PV .= "-8"
 SRC_URI = "git://github.com/ImageMagick/ImageMagick.git;branch=main;protocol=https \
            file://0001-m4-Use-autconf-provided-AC_FUNC_FSEEKO.patch"
-SRCREV = "2d24be538f286962c355cf422bb525375ac77998"
+SRCREV = "920f79206ff59f30a4cff22c9c9c393508b82663"
 
 S = "${WORKDIR}/git"
 
 inherit autotools pkgconfig update-alternatives
 export ac_cv_sys_file_offset_bits="64"
 
-# xml disabled because it's using xml2-config --prefix to determine prefix which returns just /usr with our libxml2
-# if someone needs xml support then fix it first
-EXTRA_OECONF = "--program-prefix= --program-suffix=.im7 --without-perl \
-                --disable-openmp --without-xml --disable-opencl \
-                --enable-largefile"
+EXTRA_OECONF = "--program-prefix= --program-suffix=.im7 --without-perl --enable-largefile"
 
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} cxx webp xml"
 PACKAGECONFIG[cxx] = "--with-magick-plus-plus,--without-magick-plus-plus"
 PACKAGECONFIG[graphviz] = "--with-gvc,--without-gvc,graphviz"
 PACKAGECONFIG[jp2] = "--with-jp2,,jasper"
@@ -38,6 +34,17 @@
 PACKAGECONFIG[webp] = "--with-webp,--without-webp,libwebp"
 PACKAGECONFIG[wmf] = "--with-wmf,--without-wmf,libwmf"
 PACKAGECONFIG[x11] = "--with-x,--without-x,virtual/libx11 libxext libxt"
+PACKAGECONFIG[xml] = "--with-xml,--without-xml,libxml2"
+
+do_install:append:class-target() {
+    for file in MagickCore-config.im7 MagickWand-config.im7 Magick++-config.im7; do
+        sed -i 's,${STAGING_DIR_NATIVE},,g' ${D}${bindir}/"$file"
+    done
+    sed -i 's,${S},,g' ${D}${libdir}/ImageMagick-${BASE_PV}/config-Q16HDRI/configure.xml
+    sed -i 's,${B},,g' ${D}${libdir}/ImageMagick-${BASE_PV}/config-Q16HDRI/configure.xml
+    sed -i 's,${RECIPE_SYSROOT},,g' ${D}${libdir}/ImageMagick-${BASE_PV}/config-Q16HDRI/configure.xml
+    sed -i 's,${HOSTTOOLS_DIR},${bindir},g' ${D}${sysconfdir}/ImageMagick-7/delegates.xml
+}
 
 FILES:${PN} += "${libdir}/ImageMagick-${BASE_PV}/config-Q16* \
                 ${datadir}/ImageMagick-7"
diff --git a/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.5.bb b/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.5.bb
index bc58974..7f0cfa2 100644
--- a/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libftdi/libftdi_1.5.bb
@@ -27,6 +27,11 @@
                  -DPYTHON_LIBRARY=${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so \
                  -DPYTHON_INCLUDE_DIR=${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}"
 
+do_install:append() {
+    # remove absolute paths
+    sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/libftdi1/LibFTDI1Config.cmake
+}
+
 BBCLASSEXTEND = "native nativesdk"
 
 PACKAGES =+ "${PN}-python ftdi-eeprom"
diff --git a/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb b/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
index bb253f4..c8ff0d3 100644
--- a/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libiio/libiio_git.bb
@@ -24,6 +24,8 @@
 
 EXTRA_OECMAKE = " \
     -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+    -DFLEX_TARGET_ARG_COMPILE_FLAGS='--noline' \
+    -DBISON_TARGET_ARG_COMPILE_FLAGS='--no-lines' \
     -DUDEV_RULES_INSTALL_DIR=${nonarch_base_libdir}/udev/rules.d \
     ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '-DWITH_SYSTEMD=ON -DSYSTEMD_UNIT_INSTALL_DIR=${systemd_system_unitdir}', '', d)} \
 "
diff --git a/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-cookie_3.0.1.bb b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-cookie_3.0.5.bb
similarity index 92%
rename from meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-cookie_3.0.1.bb
rename to meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-cookie_3.0.5.bb
index 53882b2..38ffd03 100644
--- a/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-cookie_3.0.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libjs/libjs-jquery-cookie_3.0.5.bb
@@ -3,9 +3,9 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e16cf0e247d84f8999bf55865a9c98cf"
 
-SRC_URI = "git://github.com/js-cookie/js-cookie.git;protocol=https;branch=master"
+SRC_URI = "git://github.com/js-cookie/js-cookie.git;protocol=https;branch=main"
 
-SRCREV = "0ba77141dd215782cc7770347a457906908c66ff"
+SRCREV = "ab3f67fc4fad88cdf07b258c08e4164e06bf7506"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libpaper/libpaper_2.1.0.bb b/meta-openembedded/meta-oe/recipes-support/libpaper/libpaper_2.1.0.bb
new file mode 100644
index 0000000..26f8fab
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libpaper/libpaper_2.1.0.bb
@@ -0,0 +1,11 @@
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "https://github.com/rrthomas/libpaper/releases/download/v${PV}/libpaper-${PV}.tar.gz"
+SRC_URI[sha256sum] = "474e9575e1235a0d8e3661f072de0193bab6ea1023363772f698a2cc39d640cf"
+
+inherit perlnative autotools
+
+EXTRA_AUTORECONF += "--install"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/0001-fix-stack-buffer-overflow-in-usbg_f_foo_attr_val-pro.patch b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/0001-fix-stack-buffer-overflow-in-usbg_f_foo_attr_val-pro.patch
new file mode 100644
index 0000000..1ab3494
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/0001-fix-stack-buffer-overflow-in-usbg_f_foo_attr_val-pro.patch
@@ -0,0 +1,796 @@
+From fc7855891c66599487265701294963bb0772bb80 Mon Sep 17 00:00:00 2001
+From: Wlodzimierz Lipert <wlodzimierz.lipert@gmail.com>
+Date: Mon, 28 Nov 2022 08:29:54 +0100
+Subject: [PATCH] fix: stack-buffer-overflow in usbg_f_foo_attr_val processing.
+ Changed ABI version from 2 to 3.
+
+Upstream-Status: Submitted [https://github.com/linux-usb-gadgets/libusbgx/pull/72]
+
+Signed-off-by: Wlodzimierz Lipert <wlodzimierz.lipert@gmail.com>
+Signed-off-by: Ming Liu <liu.ming50@gmail.com>
+---
+ include/usbg/function/hid.h  | 28 ++++++++++++----------------
+ include/usbg/function/midi.h | 35 +++++++++++++----------------------
+ include/usbg/function/ms.h   | 30 +++++++++++-------------------
+ include/usbg/function/net.h  | 34 ++++++++++++++--------------------
+ include/usbg/function/uac2.h | 29 +++++++++++++----------------
+ include/usbg/usbg_internal.h | 10 +++++-----
+ src/Makefile.am              |  2 +-
+ src/function/ether.c         | 10 +++++-----
+ src/function/hid.c           | 12 ++++++------
+ src/function/midi.c          | 10 +++++-----
+ src/function/ms.c            | 10 +++++-----
+ src/function/uac2.c          | 10 +++++-----
+ src/function/uvc.c           | 10 +++++-----
+ src/usbg_common.c            |  2 +-
+ 14 files changed, 101 insertions(+), 131 deletions(-)
+
+diff --git a/include/usbg/function/hid.h b/include/usbg/function/hid.h
+index 3463140..3b3907b 100644
+--- a/include/usbg/function/hid.h
++++ b/include/usbg/function/hid.h
+@@ -56,11 +56,6 @@ union usbg_f_hid_attr_val {
+ 	unsigned int subclass;
+ };
+ 
+-#define USBG_F_HID_UINT_TO_ATTR_VAL(WHAT)			\
+-	USBG_TO_UNION(usbg_f_hid_attr_val, protocol, WHAT)
+-
+-#define USBG_F_HID_RDESC_TO_ATTR_VAL(WHAT)			\
+-	USBG_TO_UNION(usbg_f_hid_attr_val, report_desc, WHAT)
+ /**
+  * @brief Cast from generic function to hid function
+  * @param[in] f function to be converted to hid funciton.
+@@ -137,7 +132,7 @@ int usbg_f_hid_get_attr_val(usbg_f_hid *hf, enum usbg_f_hid_attr attr,
+  * @return 0 on success usbg_error if error occurred.
+  */
+ int usbg_f_hid_set_attr_val(usbg_f_hid *hf, enum usbg_f_hid_attr attr,
+-			    union usbg_f_hid_attr_val val);
++			    const union usbg_f_hid_attr_val *val);
+ 
+ /**
+  * @brief Get the minor and major of corresponding character device
+@@ -173,8 +168,9 @@ static inline int usbg_f_hid_get_protocol(usbg_f_hid *hf,
+ static inline int usbg_f_hid_set_protocol(usbg_f_hid *hf,
+ 					  unsigned int protocol)
+ {
+-	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_PROTOCOL,
+-				       USBG_F_HID_UINT_TO_ATTR_VAL(protocol));
++
++	union usbg_f_hid_attr_val val = {.protocol = protocol};
++	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_PROTOCOL, &val);
+ }
+ 
+ /**
+@@ -199,8 +195,8 @@ static inline int usbg_f_hid_get_report_desc(usbg_f_hid *hf,
+ static inline int usbg_f_hid_set_report_desc(usbg_f_hid *hf,
+ 					     struct usbg_f_hid_report_desc report_desc)
+ {
+-	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_REPORT_DESC,
+-				       USBG_F_HID_RDESC_TO_ATTR_VAL(report_desc));
++	union usbg_f_hid_attr_val val = {.report_desc = report_desc};
++	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_REPORT_DESC, &val);
+ }
+ 
+ /**
+@@ -242,8 +238,8 @@ static inline int usbg_f_hid_set_report_desc_raw(usbg_f_hid *hf,
+ 		.len = len,
+ 	};
+ 
+-	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_REPORT_DESC,
+-				       USBG_F_HID_RDESC_TO_ATTR_VAL(report_desc));
++	union usbg_f_hid_attr_val val = {.report_desc = report_desc};
++	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_REPORT_DESC, &val);
+ }
+ 
+ /**
+@@ -268,8 +264,8 @@ static inline int usbg_f_hid_get_report_length(usbg_f_hid *hf,
+ static inline int usbg_f_hid_set_report_length(usbg_f_hid *hf,
+ 					  unsigned int report_length)
+ {
+-	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_REPORT_LENGTH,
+-				       USBG_F_HID_UINT_TO_ATTR_VAL(report_length));
++	union usbg_f_hid_attr_val val = {.report_length = report_length};
++	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_REPORT_LENGTH, &val);
+ }
+ 
+ /**
+@@ -294,8 +290,8 @@ static inline int usbg_f_hid_get_subclass(usbg_f_hid *hf,
+ static inline int usbg_f_hid_set_subclass(usbg_f_hid *hf,
+ 					  unsigned int subclass)
+ {
+-	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_SUBCLASS,
+-				       USBG_F_HID_UINT_TO_ATTR_VAL(subclass));
++	union usbg_f_hid_attr_val val = {.subclass = subclass};
++	return usbg_f_hid_set_attr_val(hf, USBG_F_HID_SUBCLASS, &val);
+ }
+ 
+ #ifdef __cplusplus
+diff --git a/include/usbg/function/midi.h b/include/usbg/function/midi.h
+index 39df047..b9d9d4f 100644
+--- a/include/usbg/function/midi.h
++++ b/include/usbg/function/midi.h
+@@ -53,15 +53,6 @@ union usbg_f_midi_attr_val {
+ 	unsigned int qlen;
+ };
+ 
+-#define USBG_F_MIDI_INT_TO_ATTR_VAL(WHAT)		\
+-	USBG_TO_UNION(usbg_f_midi_attr_val, index, WHAT)
+-
+-#define USBG_F_MIDI_UINT_TO_ATTR_VAL(WHAT)		\
+-	USBG_TO_UNION(usbg_f_midi_attr_val, qlen, WHAT)
+-
+-#define USBG_F_MIDI_CCHAR_PTR_TO_ATTR_VAL(WHAT)		\
+-	USBG_TO_UNION(usbg_f_midi_attr_val, id, WHAT)
+-
+ /**
+  * @brief Cast from generic function to midi function
+  * @param[in] f function to be converted to midi funciton.
+@@ -126,7 +117,7 @@ int usbg_f_midi_get_attr_val(usbg_f_midi *mf, enum usbg_f_midi_attr attr,
+  * @return 0 on success usbg_error if error occurred.
+  */
+ int usbg_f_midi_set_attr_val(usbg_f_midi *mf, enum usbg_f_midi_attr attr,
+-			    union usbg_f_midi_attr_val val);
++			    const union usbg_f_midi_attr_val *val);
+ 
+ /**
+  * @brief Get the index value of MIDI adapter
+@@ -148,8 +139,8 @@ static inline int usbg_f_midi_get_index(usbg_f_midi *mf, int *index)
+  */
+ static inline int usbg_f_midi_set_index(usbg_f_midi *mf, int index)
+ {
+-	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_INDEX,
+-					USBG_F_MIDI_INT_TO_ATTR_VAL(index));
++	union usbg_f_midi_attr_val val = {.index = index};
++	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_INDEX, &val);
+ }
+ 
+ /**
+@@ -188,8 +179,8 @@ int usbg_f_midi_get_id_s(usbg_f_midi *mf, char *buf, int len);
+  */
+ static inline int usbg_f_midi_set_id(usbg_f_midi *mf, const char *id)
+ {
+-	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_ID,
+-					USBG_F_MIDI_CCHAR_PTR_TO_ATTR_VAL(id));
++	union usbg_f_midi_attr_val val = {.id = id};
++	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_ID, &val);
+ }
+ 
+ /**
+@@ -212,8 +203,8 @@ static inline int usbg_f_midi_get_in_ports(usbg_f_midi *mf, unsigned *in_ports)
+  */
+ static inline int usbg_f_midi_set_in_ports(usbg_f_midi *mf, unsigned in_ports)
+ {
+-	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_IN_PORTS,
+-					USBG_F_MIDI_UINT_TO_ATTR_VAL(in_ports));
++	union usbg_f_midi_attr_val val = {.in_ports = in_ports};
++	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_IN_PORTS, &val);
+ }
+ 
+ /**
+@@ -236,8 +227,8 @@ static inline int usbg_f_midi_get_out_ports(usbg_f_midi *mf, unsigned *out_ports
+  */
+ static inline int usbg_f_midi_set_out_ports(usbg_f_midi *mf, unsigned out_ports)
+ {
+-	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_OUT_PORTS,
+-					USBG_F_MIDI_UINT_TO_ATTR_VAL(out_ports));
++	union usbg_f_midi_attr_val val = {.out_ports = out_ports};
++	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_OUT_PORTS, &val);
+ }
+ 
+ /**
+@@ -264,8 +255,8 @@ static inline int usbg_f_midi_get_buflen(usbg_f_midi *mf, int *buflen)
+  */
+ static inline int usbg_f_midi_set_buflen(usbg_f_midi *mf, unsigned buflen)
+ {
+-	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_BUFLEN,
+-					USBG_F_MIDI_UINT_TO_ATTR_VAL(buflen));
++	union usbg_f_midi_attr_val val = {.buflen = buflen};
++	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_BUFLEN, &val);
+ }
+ 
+ /**
+@@ -288,8 +279,8 @@ static inline int usbg_f_midi_get_qlen(usbg_f_midi *mf, unsigned *qlen)
+  */
+ static inline int usbg_f_midi_set_qlen(usbg_f_midi *mf, unsigned qlen)
+ {
+-	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_QLEN,
+-					USBG_F_MIDI_UINT_TO_ATTR_VAL(qlen));
++	union usbg_f_midi_attr_val val = {.qlen = qlen};
++	return usbg_f_midi_set_attr_val(mf, USBG_F_MIDI_QLEN, &val);
+ }
+ 
+ #ifdef __cplusplus
+diff --git a/include/usbg/function/ms.h b/include/usbg/function/ms.h
+index 780464c..f52eb78 100644
+--- a/include/usbg/function/ms.h
++++ b/include/usbg/function/ms.h
+@@ -56,14 +56,6 @@ union usbg_f_ms_lun_attr_val {
+ 	const char *file;
+ };
+ 
+-#define USBG_F_MS_LUN_BOOL_TO_ATTR_VAL(WHAT)		\
+-	USBG_TO_UNION(usbg_f_ms_lun_attr_val, cdrom, WHAT)
+-
+-#define USBG_F_MS_LUN_CCHAR_PTR_TO_ATTR_VAL(WHAT)		\
+-	USBG_TO_UNION(usbg_f_ms_lun_attr_val, file, WHAT)
+-
+-
+-
+ /**
+  * @brief Cast from generic function to mass storage function
+  * @param[in] f function to be converted to ms funciton.
+@@ -157,7 +149,7 @@ int usbg_f_ms_get_lun_attr_val(usbg_f_ms *mf, int lun_id,
+  */
+ int usbg_f_ms_set_lun_attr_val(usbg_f_ms *mf, int lun_id,
+ 			       enum usbg_f_ms_lun_attr lattr,
+-			       const union usbg_f_ms_lun_attr_val val);
++			       const union usbg_f_ms_lun_attr_val *val);
+ 
+ /**
+  * @brief Get the value which determines if lun is visible as a cdrom
+@@ -183,8 +175,8 @@ static inline int usbg_f_ms_get_lun_cdrom(usbg_f_ms *mf, int lun_id,
+ static inline int usbg_f_ms_set_lun_cdrom(usbg_f_ms *mf, int lun_id,
+ 					  bool cdrom)
+ {
+-	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_CDROM,
+-					  USBG_F_MS_LUN_BOOL_TO_ATTR_VAL(cdrom));
++	union usbg_f_ms_lun_attr_val val = {.cdrom = cdrom};
++	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_CDROM, &val);
+ }
+ 
+ /**
+@@ -209,8 +201,8 @@ static inline int usbg_f_ms_get_lun_ro(usbg_f_ms *mf, int lun_id, bool *ro)
+  */
+ static inline int usbg_f_ms_set_lun_ro(usbg_f_ms *mf, int lun_id, bool ro)
+ {
+-	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_RO,
+-					  USBG_F_MS_LUN_BOOL_TO_ATTR_VAL(ro));
++	union usbg_f_ms_lun_attr_val val = {.ro = ro};
++	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_RO, &val);
+ }
+ 
+ /**
+@@ -239,8 +231,8 @@ static inline int usbg_f_ms_get_lun_nofua(usbg_f_ms *mf, int lun_id,
+ static inline int usbg_f_ms_set_lun_nofua(usbg_f_ms *mf, int lun_id,
+ 				bool nofua)
+ {
+-	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_NOFUA,
+-					  USBG_F_MS_LUN_BOOL_TO_ATTR_VAL(nofua));
++	union usbg_f_ms_lun_attr_val val = {.nofua = nofua};
++	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_NOFUA, &val);
+ }
+ 
+ /**
+@@ -267,8 +259,8 @@ static inline int usbg_f_ms_get_lun_removable(usbg_f_ms *mf, int lun_id,
+ static inline int usbg_f_ms_set_lun_removable(usbg_f_ms *mf, int lun_id,
+ 				bool removable)
+ {
+-	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_REMOVABLE,
+-					  USBG_F_MS_LUN_BOOL_TO_ATTR_VAL(removable));
++	union usbg_f_ms_lun_attr_val val = {.removable = removable};
++	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_REMOVABLE, &val);
+ }
+ 
+ /**
+@@ -313,8 +305,8 @@ int usbg_f_ms_get_lun_file_s(usbg_f_ms *mf, int lun_id,
+ static inline int usbg_f_ms_set_lun_file(usbg_f_ms *mf, int lun_id,
+ 			   const char *file)
+ {
+-	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_FILE,
+-					  USBG_F_MS_LUN_CCHAR_PTR_TO_ATTR_VAL(file));
++	union usbg_f_ms_lun_attr_val val = {.file = file};
++	return usbg_f_ms_set_lun_attr_val(mf, lun_id, USBG_F_MS_LUN_FILE, &val);
+ }
+ 
+ /**
+diff --git a/include/usbg/function/net.h b/include/usbg/function/net.h
+index b0409f1..06cee30 100644
+--- a/include/usbg/function/net.h
++++ b/include/usbg/function/net.h
+@@ -56,12 +56,6 @@ union usbg_f_net_attr_val {
+ 	unsigned int protocol;
+ };
+ 
+-#define USBG_F_NET_ETHER_ADDR_TO_ATTR_VAL(WHAT)		\
+-	USBG_TO_UNION(usbg_f_net_attr_val, dev_addr, WHAT)
+-
+-#define USBG_F_NET_INT_TO_ATTR_VAL(WHAT)		\
+-	USBG_TO_UNION(usbg_f_net_attr_val, qmult, WHAT)
+-
+ /**
+  * @brief Cast from generic function to net function
+  * @param[in] f function to be converted to net funciton.
+@@ -125,7 +119,7 @@ int usbg_f_net_get_attr_val(usbg_f_net *nf, enum usbg_f_net_attr attr,
+  * @return 0 on success usbg_error if error occurred.
+  */
+ int usbg_f_net_set_attr_val(usbg_f_net *nf, enum usbg_f_net_attr attr,
+-			    const union usbg_f_net_attr_val val);
++			    const union usbg_f_net_attr_val *val);
+ 
+ /**
+  * @brief Get the value of device side MAC address
+@@ -136,7 +130,7 @@ int usbg_f_net_set_attr_val(usbg_f_net *nf, enum usbg_f_net_attr attr,
+ static inline int usbg_f_net_get_dev_addr(usbg_f_net *nf,
+ 					  struct ether_addr *addr)
+ {
+-	union usbg_f_net_attr_val val = { .dev_addr = *addr, };
++	union usbg_f_net_attr_val val = {.dev_addr = *addr};
+ 	return usbg_f_net_get_attr_val(nf, USBG_F_NET_DEV_ADDR, &val);
+ }
+ 
+@@ -149,8 +143,8 @@ static inline int usbg_f_net_get_dev_addr(usbg_f_net *nf,
+ static inline int usbg_f_net_set_dev_addr(usbg_f_net *nf,
+ 			     const struct ether_addr *addr)
+ {
+-	return usbg_f_net_set_attr_val(nf, USBG_F_NET_DEV_ADDR,
+-				       USBG_F_NET_ETHER_ADDR_TO_ATTR_VAL(*addr));
++	union usbg_f_net_attr_val val = {.dev_addr = *addr};
++	return usbg_f_net_set_attr_val(nf, USBG_F_NET_DEV_ADDR, &val);
+ }
+ 
+ /**
+@@ -175,8 +169,8 @@ static inline int usbg_f_net_get_host_addr(usbg_f_net *nf,
+ static inline int usbg_f_net_set_host_addr(usbg_f_net *nf,
+ 					   const struct ether_addr *addr)
+ {
+-	return usbg_f_net_set_attr_val(nf, USBG_F_NET_HOST_ADDR,
+-				       USBG_F_NET_ETHER_ADDR_TO_ATTR_VAL(*addr));
++	union usbg_f_net_attr_val val = {.host_addr = *addr};
++	return usbg_f_net_set_attr_val(nf, USBG_F_NET_HOST_ADDR, &val);
+ }
+ 
+ /**
+@@ -226,8 +220,8 @@ static inline int usbg_f_net_get_qmult(usbg_f_net *nf, int *qmult)
+  */
+ static inline int usbg_f_net_set_qmult(usbg_f_net *nf, int qmult)
+ {
+-	return usbg_f_net_set_attr_val(nf, USBG_F_NET_QMULT,
+-				       USBG_F_NET_INT_TO_ATTR_VAL(qmult));
++	union usbg_f_net_attr_val val = {.qmult = qmult};
++	return usbg_f_net_set_attr_val(nf, USBG_F_NET_QMULT, &val);
+ }
+ 
+ /**
+@@ -250,8 +244,8 @@ static inline int usbg_f_net_get_class(usbg_f_net *nf, unsigned int *class_)
+  */
+ static inline int usbg_f_net_set_class(usbg_f_net *nf, unsigned int class_)
+ {
+-	return usbg_f_net_set_attr_val(nf, USBG_F_NET_CLASS,
+-				       USBG_F_NET_INT_TO_ATTR_VAL(class_));
++	union usbg_f_net_attr_val val = {.class_ = class_};
++	return usbg_f_net_set_attr_val(nf, USBG_F_NET_CLASS, &val);
+ }
+ 
+ /**
+@@ -274,8 +268,8 @@ static inline int usbg_f_net_get_subclass(usbg_f_net *nf, int *subclass)
+  */
+ static inline int usbg_f_net_set_subclass(usbg_f_net *nf, unsigned int subclass)
+ {
+-	return usbg_f_net_set_attr_val(nf, USBG_F_NET_SUBCLASS,
+-				       USBG_F_NET_INT_TO_ATTR_VAL(subclass));
++	union usbg_f_net_attr_val val = {.subclass = subclass};
++	return usbg_f_net_set_attr_val(nf, USBG_F_NET_SUBCLASS, &val);
+ }
+ 
+ /**
+@@ -298,8 +292,8 @@ static inline int usbg_f_net_get_protocol(usbg_f_net *nf, int *protocol)
+  */
+ static inline int usbg_f_net_set_protocol(usbg_f_net *nf, unsigned int protocol)
+ {
+-	return usbg_f_net_set_attr_val(nf, USBG_F_NET_PROTOCOL,
+-				       USBG_F_NET_INT_TO_ATTR_VAL(protocol));
++	union usbg_f_net_attr_val val = {.protocol = protocol};
++	return usbg_f_net_set_attr_val(nf, USBG_F_NET_PROTOCOL, &val);
+ }
+ 
+ #ifdef __cplusplus
+diff --git a/include/usbg/function/uac2.h b/include/usbg/function/uac2.h
+index c1bbb14..1ea55dc 100644
+--- a/include/usbg/function/uac2.h
++++ b/include/usbg/function/uac2.h
+@@ -53,9 +53,6 @@ union usbg_f_uac2_attr_val {
+ 	int p_ssize;
+ };
+ 
+-#define USBG_F_UAC2_INT_TO_ATTR_VAL(WHAT)			\
+-	USBG_TO_UNION(usbg_f_uac2_attr_val, c_chmask, WHAT)
+-
+ /**
+  * @brief Cast from generic function to uac2 function
+  * @param[in] f function to be converted to uac2 funciton.
+@@ -115,7 +112,7 @@ int usbg_f_uac2_get_attr_val(usbg_f_uac2 *af, enum usbg_f_uac2_attr attr,
+  * @return 0 on success usbg_error if error occurred.
+  */
+ int usbg_f_uac2_set_attr_val(usbg_f_uac2 *af, enum usbg_f_uac2_attr attr,
+-			     union usbg_f_uac2_attr_val val);
++			     const union usbg_f_uac2_attr_val *val);
+ 
+ /**
+  * @brief Get the capture channel mask of UAC2 adapter
+@@ -137,8 +134,8 @@ static inline int usbg_f_uac2_get_c_chmask(usbg_f_uac2 *af, int *c_chmask)
+  */
+ static inline int usbg_f_uac2_set_c_chmask(usbg_f_uac2 *af, int c_chmask)
+ {
+-	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_C_CHMASK,
+-					USBG_F_UAC2_INT_TO_ATTR_VAL(c_chmask));
++	union usbg_f_uac2_attr_val val = {.c_chmask = c_chmask};
++	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_C_CHMASK, &val);
+ }
+ 
+ /**
+@@ -161,8 +158,8 @@ static inline int usbg_f_uac2_get_c_srate(usbg_f_uac2 *af, int *c_srate)
+  */
+ static inline int usbg_f_uac2_set_c_srate(usbg_f_uac2 *af, int c_srate)
+ {
+-	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_C_SRATE,
+-					USBG_F_UAC2_INT_TO_ATTR_VAL(c_srate));
++	union usbg_f_uac2_attr_val val = {.c_srate = c_srate};
++	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_C_SRATE, &val);
+ }
+ 
+ /**
+@@ -185,8 +182,8 @@ static inline int usbg_f_uac2_get_c_ssize(usbg_f_uac2 *af, int *c_ssize)
+  */
+ static inline int usbg_f_uac2_set_c_ssize(usbg_f_uac2 *af, int c_ssize)
+ {
+-	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_C_SSIZE,
+-					USBG_F_UAC2_INT_TO_ATTR_VAL(c_ssize));
++	union usbg_f_uac2_attr_val val = {.c_ssize = c_ssize};
++	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_C_SSIZE, &val);
+ }
+ 
+ /**
+@@ -209,8 +206,8 @@ static inline int usbg_f_uac2_get_p_chmask(usbg_f_uac2 *af, int *p_chmask)
+  */
+ static inline int usbg_f_uac2_set_p_chmask(usbg_f_uac2 *af, int p_chmask)
+ {
+-	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_P_CHMASK,
+-					USBG_F_UAC2_INT_TO_ATTR_VAL(p_chmask));
++	union usbg_f_uac2_attr_val val = {.p_chmask = p_chmask};
++	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_P_CHMASK, &val);
+ }
+ 
+ /**
+@@ -233,8 +230,8 @@ static inline int usbg_f_uac2_get_p_srate(usbg_f_uac2 *af, int *p_srate)
+  */
+ static inline int usbg_f_uac2_set_p_srate(usbg_f_uac2 *af, int p_srate)
+ {
+-	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_P_SRATE,
+-					USBG_F_UAC2_INT_TO_ATTR_VAL(p_srate));
++	union usbg_f_uac2_attr_val val = {.p_srate = p_srate};
++	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_P_SRATE, &val);
+ }
+ 
+ /**
+@@ -257,8 +254,8 @@ static inline int usbg_f_uac2_get_p_ssize(usbg_f_uac2 *af, int *p_ssize)
+  */
+ static inline int usbg_f_uac2_set_p_ssize(usbg_f_uac2 *af, int p_ssize)
+ {
+-	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_P_SSIZE,
+-					USBG_F_UAC2_INT_TO_ATTR_VAL(p_ssize));
++	union usbg_f_uac2_attr_val val = {.p_ssize = p_ssize};
++	return usbg_f_uac2_set_attr_val(af, USBG_F_UAC2_P_SSIZE, &val);
+ }
+ 
+ #ifdef __cplusplus
+diff --git a/include/usbg/usbg_internal.h b/include/usbg/usbg_internal.h
+index 1d8dfe2..d6a3e3a 100644
+--- a/include/usbg/usbg_internal.h
++++ b/include/usbg/usbg_internal.h
+@@ -322,7 +322,7 @@ void usbg_cleanup_function(struct usbg_function *f);
+ 	}
+ 
+ typedef int (*usbg_attr_get_func)(const char *, const char *, const char *, void *);
+-typedef int (*usbg_attr_set_func)(const char *, const char *, const char *, void *);
++typedef int (*usbg_attr_set_func)(const char *, const char *, const char *, const void *);
+ 
+ static inline int usbg_get_dec(const char *path, const char *name,
+ 			   const char *attr, void *val)
+@@ -331,7 +331,7 @@ static inline int usbg_get_dec(const char *path, const char *name,
+ }
+ 
+ static inline int usbg_set_dec(const char *path, const char *name,
+-			   const char *attr, void *val)
++			   const char *attr, const void *val)
+ {
+ 	return usbg_write_dec(path, name, attr, *((int *)val));
+ }
+@@ -343,7 +343,7 @@ static inline int usbg_get_bool(const char *path, const char *name,
+ }
+ 
+ static inline int usbg_set_bool(const char *path, const char *name,
+-			   const char *attr, void *val)
++			   const char *attr, const void *val)
+ {
+ 	return usbg_write_bool(path, name, attr, *((bool *)val));
+ }
+@@ -355,7 +355,7 @@ static inline int usbg_get_string(const char *path, const char *name,
+ }
+ 
+ static inline int usbg_set_string(const char *path, const char *name,
+-			      const char *attr, void *val)
++			      const char *attr, const void *val)
+ {
+ 	return usbg_write_string(path, name, attr, *(char **)val);
+ }
+@@ -364,7 +364,7 @@ int usbg_get_ether_addr(const char *path, const char *name, const char *attr,
+ 			void *val);
+ 
+ int usbg_set_ether_addr(const char *path, const char *name, const char *attr,
+-			void *val);
++			const void *val);
+ 
+ int usbg_get_dev(const char *path, const char *name, const char *attr,
+ 		 void *val);
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 634209f..ac97bc8 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -7,6 +7,6 @@ else
+ libusbgx_la_SOURCES += usbg_schemes_none.c
+ endif
+ libusbgx_la_LDFLAGS = $(LIBCONFIG_LIBS)
+-libusbgx_la_LDFLAGS += -version-info 2:0:0
++libusbgx_la_LDFLAGS += -version-info 3:0:0
+ libusbgx_la_CFLAGS = $(LIBCONFIG_CFLAGS)
+ AM_CPPFLAGS=-I$(top_srcdir)/include/ -I$(top_builddir)/include/usbg
+diff --git a/src/function/ether.c b/src/function/ether.c
+index ab91af9..d7dcd5d 100644
+--- a/src/function/ether.c
++++ b/src/function/ether.c
+@@ -124,7 +124,7 @@ static int ether_libconfig_import(struct usbg_function *f,
+ 		if (ret < 0)
+ 			break;
+ 
+-		ret = usbg_f_net_set_attr_val(nf, i, val);
++		ret = usbg_f_net_set_attr_val(nf, i, &val);
+ 		if (ret)
+ 			break;
+ 	}
+@@ -258,8 +258,8 @@ int usbg_f_net_set_attrs(usbg_f_net *nf,
+ 			continue;
+ 
+ 		ret = usbg_f_net_set_attr_val(nf, i,
+-					       *(union usbg_f_net_attr_val *)
+-					       ((char *)attrs
++					       (const union usbg_f_net_attr_val *)
++					       ((const char *)attrs
+ 						+ net_attr[i].offset));
+ 		if (ret)
+ 			break;
+@@ -277,12 +277,12 @@ int usbg_f_net_get_attr_val(usbg_f_net *nf, enum usbg_f_net_attr attr,
+ }
+ 
+ int usbg_f_net_set_attr_val(usbg_f_net *nf, enum usbg_f_net_attr attr,
+-			    union usbg_f_net_attr_val val)
++			    const union usbg_f_net_attr_val *val)
+ {
+ 	return net_attr[attr].ro ?
+ 		USBG_ERROR_INVALID_PARAM :
+ 		net_attr[attr].set(nf->func.path, nf->func.name,
+-				   net_attr[attr].name, &val);
++				   net_attr[attr].name, val);
+ }
+ 
+ int usbg_f_net_get_ifname_s(usbg_f_net *nf, char *buf, int len)
+diff --git a/src/function/hid.c b/src/function/hid.c
+index 4d075cf..895c2c6 100644
+--- a/src/function/hid.c
++++ b/src/function/hid.c
+@@ -69,9 +69,9 @@ static int hid_get_report(const char *path, const char *name, const char *attr,
+ }
+ 
+ static int hid_set_report(const char *path, const char *name, const char *attr,
+-			  void *val)
++			  const void *val)
+ {
+-	struct usbg_f_hid_report_desc *report_desc = val;
++	const struct usbg_f_hid_report_desc *report_desc = val;
+ 	char *buf = report_desc->desc;
+ 	int len = report_desc->len;
+ 	int ret;
+@@ -239,7 +239,7 @@ static int hid_libconfig_import(struct usbg_function *f,
+ 		if (ret < 0)
+ 			break;
+ 
+-		ret = usbg_f_hid_set_attr_val(hf, i, val);
++		ret = usbg_f_hid_set_attr_val(hf, i, &val);
+ 		if (ret)
+ 			break;
+ 	}
+@@ -327,7 +327,7 @@ int usbg_f_hid_set_attrs(usbg_f_hid *hf,
+ 			continue;
+ 
+ 		ret = usbg_f_hid_set_attr_val(hf, i,
+-					       *(union usbg_f_hid_attr_val *)
++					       (union usbg_f_hid_attr_val *)
+ 					       ((char *)attrs
+ 						+ hid_attr[i].offset));
+ 		if (ret)
+@@ -346,11 +346,11 @@ int usbg_f_hid_get_attr_val(usbg_f_hid *hf, enum usbg_f_hid_attr attr,
+ }
+ 
+ int usbg_f_hid_set_attr_val(usbg_f_hid *hf, enum usbg_f_hid_attr attr,
+-			    union usbg_f_hid_attr_val val)
++			    const union usbg_f_hid_attr_val *val)
+ {
+ 	return hid_attr[attr].ro ?
+ 		USBG_ERROR_INVALID_PARAM :
+ 		hid_attr[attr].set(hf->func.path, hf->func.name,
+-				  hid_attr[attr].name, &val);
++				  hid_attr[attr].name, val);
+ }
+ 
+diff --git a/src/function/midi.c b/src/function/midi.c
+index 1cedb97..2318b49 100644
+--- a/src/function/midi.c
++++ b/src/function/midi.c
+@@ -100,7 +100,7 @@ static int midi_libconfig_import(struct usbg_function *f,
+ 		if (ret < 0)
+ 			break;
+ 
+-		ret = usbg_f_midi_set_attr_val(mf, i, val);
++		ret = usbg_f_midi_set_attr_val(mf, i, &val);
+ 		if (ret)
+ 			break;
+ 	}
+@@ -185,8 +185,8 @@ int usbg_f_midi_set_attrs(usbg_f_midi *mf,
+ 
+ 	for (i = USBG_F_MIDI_ATTR_MIN; i < USBG_F_MIDI_ATTR_MAX; ++i) {
+ 		ret = usbg_f_midi_set_attr_val(mf, i,
+-					       *(union usbg_f_midi_attr_val *)
+-					       ((char *)attrs
++					       (const union usbg_f_midi_attr_val *)
++					       ((const char *)attrs
+ 						+ midi_attr[i].offset));
+ 		if (ret)
+ 			break;
+@@ -204,10 +204,10 @@ int usbg_f_midi_get_attr_val(usbg_f_midi *mf, enum usbg_f_midi_attr attr,
+ }
+ 
+ int usbg_f_midi_set_attr_val(usbg_f_midi *mf, enum usbg_f_midi_attr attr,
+-			    union usbg_f_midi_attr_val val)
++			    const union usbg_f_midi_attr_val *val)
+ {
+ 	return midi_attr[attr].set(mf->func.path, mf->func.name,
+-				    midi_attr[attr].name, &val);
++				    midi_attr[attr].name, val);
+ }
+ 
+ int usbg_f_midi_get_id_s(usbg_f_midi *mf, char *buf, int len)
+diff --git a/src/function/ms.c b/src/function/ms.c
+index 519b012..5cdd814 100644
+--- a/src/function/ms.c
++++ b/src/function/ms.c
+@@ -207,7 +207,7 @@ static int ms_import_lun_attrs(struct usbg_f_ms *mf, int lun_id,
+ 		if (ret < 0)
+ 			break;
+ 
+-		ret = usbg_f_ms_set_lun_attr_val(mf, lun_id, i, val);
++		ret = usbg_f_ms_set_lun_attr_val(mf, lun_id, i, &val);
+ 		if (ret)
+ 			break;
+ 	}
+@@ -605,8 +605,8 @@ int usbg_f_ms_set_lun_attrs(usbg_f_ms *mf, int lun_id,
+ 
+ 	for (i = USBG_F_MS_LUN_ATTR_MIN; i < USBG_F_MS_LUN_ATTR_MAX; ++i) {
+ 		ret = usbg_f_ms_set_lun_attr_val(mf, lun_id, i,
+-					       *(union usbg_f_ms_lun_attr_val *)
+-					       ((char *)lattrs
++					       (const union usbg_f_ms_lun_attr_val *)
++					       ((const char *)lattrs
+ 						+ ms_lun_attr[i].offset));
+ 		if (ret)
+ 			break;
+@@ -633,7 +633,7 @@ int usbg_f_ms_get_lun_attr_val(usbg_f_ms *mf, int lun_id,
+ 
+ int usbg_f_ms_set_lun_attr_val(usbg_f_ms *mf, int lun_id,
+ 			       enum usbg_f_ms_lun_attr lattr,
+-			       union usbg_f_ms_lun_attr_val val)
++			       const union usbg_f_ms_lun_attr_val *val)
+ {
+ 	char lpath[USBG_MAX_PATH_LENGTH];
+ 	int ret;
+@@ -644,7 +644,7 @@ int usbg_f_ms_set_lun_attr_val(usbg_f_ms *mf, int lun_id,
+ 		return USBG_ERROR_PATH_TOO_LONG;
+ 
+ 	return 	ms_lun_attr[lattr].set(lpath, "",
+-				       ms_lun_attr[lattr].name, &val);
++				       ms_lun_attr[lattr].name, val);
+ }
+ 
+ int usbg_f_ms_get_lun_file_s(usbg_f_ms *mf, int lun_id,
+diff --git a/src/function/uac2.c b/src/function/uac2.c
+index f2c1a49..38a9b0f 100644
+--- a/src/function/uac2.c
++++ b/src/function/uac2.c
+@@ -89,7 +89,7 @@ static int uac2_libconfig_import(struct usbg_function *f,
+ 		if (ret < 0)
+ 			break;
+ 
+-		ret = usbg_f_uac2_set_attr_val(af, i, val);
++		ret = usbg_f_uac2_set_attr_val(af, i, &val);
+ 		if (ret)
+ 			break;
+ 	}
+@@ -174,8 +174,8 @@ int usbg_f_uac2_set_attrs(usbg_f_uac2 *af,
+ 
+ 	for (i = USBG_F_UAC2_ATTR_MIN; i < USBG_F_UAC2_ATTR_MAX; ++i) {
+ 		ret = usbg_f_uac2_set_attr_val(af, i,
+-					       *(union usbg_f_uac2_attr_val *)
+-					       ((char *)attrs
++					       (const union usbg_f_uac2_attr_val *)
++					       ((const char *)attrs
+ 						+ uac2_attr[i].offset));
+ 		if (ret)
+ 			break;
+@@ -193,8 +193,8 @@ int usbg_f_uac2_get_attr_val(usbg_f_uac2 *af, enum usbg_f_uac2_attr attr,
+ }
+ 
+ int usbg_f_uac2_set_attr_val(usbg_f_uac2 *af, enum usbg_f_uac2_attr attr,
+-			     union usbg_f_uac2_attr_val val)
++			     const union usbg_f_uac2_attr_val *val)
+ {
+ 	return uac2_attr[attr].set(af->func.path, af->func.name,
+-				    uac2_attr[attr].name, &val);
++				    uac2_attr[attr].name, val);
+ }
+diff --git a/src/function/uvc.c b/src/function/uvc.c
+index f39594b..947b94e 100644
+--- a/src/function/uvc.c
++++ b/src/function/uvc.c
+@@ -303,7 +303,7 @@ int usbg_f_uvc_get_config_attr_val(usbg_f_uvc *uvcf, enum usbg_f_uvc_config_attr
+ }
+ 
+ int usbg_f_uvc_set_config_attr_val(usbg_f_uvc *uvcf, enum usbg_f_uvc_config_attr iattr,
+-			       union usbg_f_uvc_config_attr_val val)
++			       const union usbg_f_uvc_config_attr_val *val)
+ {
+ 	char ipath[USBG_MAX_PATH_LENGTH];
+ 	int nmb;
+@@ -314,7 +314,7 @@ int usbg_f_uvc_set_config_attr_val(usbg_f_uvc *uvcf, enum usbg_f_uvc_config_attr
+ 		return USBG_ERROR_PATH_TOO_LONG;
+ 
+ 	return uvc_config_attr[iattr].set(ipath, "",
+-				       uvc_config_attr[iattr].name, &val);
++				       uvc_config_attr[iattr].name, val);
+ }
+ 
+ int usbg_f_uvc_get_config_attrs(usbg_f_uvc *uvcf, struct usbg_f_uvc_config_attrs *iattrs)
+@@ -341,8 +341,8 @@ int usbg_f_uvc_set_config_attrs(usbg_f_uvc *uvcf, const struct usbg_f_uvc_config
+ 
+ 	for (i = USBG_F_UVC_FRAME_ATTR_MIN; i < USBG_F_UVC_FRAME_ATTR_MAX; ++i) {
+ 		ret = usbg_f_uvc_set_config_attr_val(uvcf, i,
+-					       *(union usbg_f_uvc_config_attr_val *)
+-					       ((char *)iattrs
++					       (const union usbg_f_uvc_config_attr_val *)
++					       ((const char *)iattrs
+ 						+ uvc_config_attr[i].offset));
+ 		if (ret)
+ 			break;
+@@ -774,7 +774,7 @@ static int uvc_import_config(struct usbg_f_uvc *uvcf, config_setting_t *root)
+ 		if (ret < 0)
+ 			break;
+ 
+-		ret = usbg_f_uvc_set_config_attr_val(uvcf, i, val);
++		ret = usbg_f_uvc_set_config_attr_val(uvcf, i, &val);
+ 		if (ret)
+ 			break;
+ 	}
+diff --git a/src/usbg_common.c b/src/usbg_common.c
+index 5f7f4e5..7234649 100644
+--- a/src/usbg_common.c
++++ b/src/usbg_common.c
+@@ -337,7 +337,7 @@ int usbg_get_ether_addr(const char *path, const char *name,
+ }
+ 
+ int usbg_set_ether_addr(const char *path, const char *name,
+-			      const char *attr, void *val)
++			      const char *attr, const void *val)
+ {
+ 	char str_addr[USBG_MAX_STR_LENGTH];
+ 
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/0001-libusbgx-Add-interface-name-for-NCM-Feature-Descript.patch b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/0001-libusbgx-Add-interface-name-for-NCM-Feature-Descript.patch
new file mode 100644
index 0000000..cc122c8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/0001-libusbgx-Add-interface-name-for-NCM-Feature-Descript.patch
@@ -0,0 +1,52 @@
+From 4f3f2ad08e6ca132bd1dd388e02b57223bf4219d Mon Sep 17 00:00:00 2001
+From: Ming Liu <liu.ming50@gmail.com>
+Date: Sun, 11 Dec 2022 14:11:49 +0100
+Subject: [PATCH] libusbgx: Add interface name for NCM Feature Descriptors
+
+In commit: abf422bffca4a4767e7e242c44910dbf5ef7094f
+[
+Author: Stefan Agner <stefan.agner@toradex.com>
+Date:   Tue Jan 24 14:22:25 2017 -0800
+
+    libusbgx: Add interface name for Feature Descriptors
+
+    This adds interface name required for "Feature Descriptors". If
+    specified, we can assume that a Feature Descriptor with the
+    interface name of the specified string is understood by the
+    kernel (e.g. interface.rndis).
+]
+
+it only added Feature Descriptors for RNDIS, NCM also needs that, or
+else it could not be recognized by Windows systems.
+
+Add Feature Descriptors interface name for NCM.
+
+Upstream-Status: Submitted [https://github.com/linux-usb-gadgets/libusbgx/pull/73]
+
+Signed-off-by: Ming Liu <liu.ming50@gmail.com>
+---
+ src/function/ether.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/function/ether.c b/src/function/ether.c
+index b1fe1d2..a9eaf33 100644
+--- a/src/function/ether.c
++++ b/src/function/ether.c
+@@ -184,8 +184,14 @@ struct usbg_function_type usbg_f_type_subset = {
+ 	ETHER_FUNCTION_OPTS
+ };
+ 
++static char *ncm_os_desc_ifnames[] = {
++	"ncm",
++	NULL
++};
++
+ struct usbg_function_type usbg_f_type_ncm = {
+ 	.name = "ncm",
++	.os_desc_iname = ncm_os_desc_ifnames,
+ 	ETHER_FUNCTION_OPTS
+ };
+ 
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start
index 9e22671..e80cb2c 100755
--- a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start
+++ b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start
@@ -6,6 +6,10 @@
     /usr/bin/gadget-import "$i" /etc/usbgx/"$i".schema
 done
 
+for script in $(find -L /etc/usbgx.d -type f -exec test -e {} \; -print 2>/dev/null); do
+    $script
+done
+
 for i in $ENABLED_SCHEMAS; do
     configured_udc=$(eval 'echo ${UDC_FOR_SCHEMA_'"$i"'}')
     if [ -n "${configured_udc}" ] && [ -e "/sys/class/udc/${configured_udc}" ]; then
diff --git a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service
index 74541d3..ba92f1a 100644
--- a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service
+++ b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service
@@ -1,9 +1,11 @@
 [Unit]
 Description=Load USB gadget schemas
+Requires=sys-kernel-config.mount
+After=sys-kernel-config.mount
 
 [Service]
-Type=oneshot
+Type=simple
 ExecStart=/usr/bin/gadget-start
 
 [Install]
-WantedBy=multi-user.target
+WantedBy=usb-gadget.target
diff --git a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb
index 11e8893..7998b0c 100644
--- a/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libusbgx/libusbgx_git.bb
@@ -6,10 +6,12 @@
 inherit autotools pkgconfig systemd update-rc.d update-alternatives
 
 PV = "0.2.0+git${SRCPV}"
-SRCREV = "45c14ef4d5d7ced0fbf984208de44ced6d5ed898"
+SRCREV = "721e3a1cbd7e2b6361bb439d3959e7403e4f0092"
 SRCBRANCH = "master"
 SRC_URI = " \
     git://github.com/libusbgx/libusbgx.git;branch=${SRCBRANCH};protocol=https \
+    file://0001-libusbgx-Add-interface-name-for-NCM-Feature-Descript.patch \
+    file://0001-fix-stack-buffer-overflow-in-usbg_f_foo_attr_val-pro.patch \
     file://gadget-start \
     file://usbgx.initd \
     file://usbgx.service \
@@ -35,7 +37,9 @@
 INHIBIT_UPDATERCD_BBCLASS = "${@bb.utils.contains('PACKAGECONFIG', 'examples', '1', '0', d)}"
 
 do_install:append() {
-    install -Dm 0755 ${WORKDIR}/gadget-start ${D}/${bindir}/gadget-start
+    install -Dm 0755 ${WORKDIR}/gadget-start ${D}${bindir}/gadget-start
+    sed -i -e 's,/usr/bin,${bindir},g' -e 's,/etc,${sysconfdir},g' ${D}${bindir}/gadget-start
+
     if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
         install -Dm 0644 ${WORKDIR}/usbgx.service ${D}${systemd_system_unitdir}/usbgx.service
     fi
diff --git a/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb b/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.4.bb
similarity index 80%
rename from meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb
rename to meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.4.bb
index 8e6d455..729857e 100644
--- a/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.3.bb
+++ b/meta-openembedded/meta-oe/recipes-support/log4cpp/log4cpp_1.1.4.bb
@@ -6,8 +6,7 @@
 SRC_URI = "http://downloads.sourceforge.net/${BPN}/${BP}.tar.gz \
            file://fix-pc.patch;striplevel=2 \
           "
-SRC_URI[md5sum] = "b9e2cee932da987212f2c74b767b4d8b"
-SRC_URI[sha256sum] = "2cbbea55a5d6895c9f0116a9a9ce3afb86df383cd05c9d6c1a4238e5e5c8f51d"
+SRC_URI[sha256sum] = "696113659e426540625274a8b251052cc04306d8ee5c42a0c7639f39ca90c9d6"
 
 S = "${WORKDIR}/${BPN}"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/mg/mg_20230406.bb b/meta-openembedded/meta-oe/recipes-support/mg/mg_20230501.bb
similarity index 88%
rename from meta-openembedded/meta-oe/recipes-support/mg/mg_20230406.bb
rename to meta-openembedded/meta-oe/recipes-support/mg/mg_20230501.bb
index 8d61b7f..ee00003 100644
--- a/meta-openembedded/meta-oe/recipes-support/mg/mg_20230406.bb
+++ b/meta-openembedded/meta-oe/recipes-support/mg/mg_20230501.bb
@@ -1,11 +1,11 @@
 SUMMARY = "A portable version of the mg maintained by the OpenBSD team"
 HOMEPAGE = "http://homepage.boetes.org/software/mg/"
 LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://version.c;md5=36d8ace99e6cd003132975a9266d3f77"
+LIC_FILES_CHKSUM = "file://version.c;md5=a8e0b53d89d277bf3b40878ac568bedd"
 DEPENDS = "ncurses libbsd"
 SECTION = "console/editors"
 
-SRCREV = "4e6d2de9582cfe7f0977be4ce9532e3d33c5be15"
+SRCREV = "f21c2ba36772ffa68d9cfa55305e427d37903b4a"
 SRC_URI = "git://github.com/hboetes/mg;branch=master;protocol=https \
            file://0001-fileio-Include-sys-param.h-for-MAXNAMLEN.patch \
            file://0002-fileio-Define-DEFFILEMODE-if-platform-is-missing.patch \
diff --git a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.04.0.bb b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.04.0.bb
index 19bdce4..099be58 100644
--- a/meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.04.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/poppler/poppler_23.04.0.bb
@@ -10,7 +10,7 @@
            "
 SRC_URI[sha256sum] = "b6d893dc7dcd4138b9e9df59a13c59695e50e80dc5c2cacee0674670693951a1"
 
-DEPENDS = "fontconfig zlib cairo lcms glib-2.0"
+DEPENDS = "fontconfig zlib cairo lcms glib-2.0 glib-2.0-native"
 
 inherit cmake pkgconfig gobject-introspection
 
diff --git a/meta-openembedded/meta-oe/recipes-support/psutils/psutils_2.10.bb b/meta-openembedded/meta-oe/recipes-support/psutils/psutils_2.10.bb
new file mode 100644
index 0000000..1f1894a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/psutils/psutils_2.10.bb
@@ -0,0 +1,24 @@
+LICENSE = "GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=87212b5f1ae096371049a12f80034f32"
+
+SRC_URI = "https://github.com/rrthomas/psutils/releases/download/v${PV}/psutils-${PV}.tar.gz"
+SRC_URI[sha256sum] = "6f8339fd5322df5c782bfb355d9f89e513353220fca0700a5a28775404d7e98b"
+
+inherit perlnative autotools
+
+export PERL="/usr/bin/env perl"
+
+DEPENDS += "libpaper-native"
+
+do_install:append() {
+    sed -i -e 's|${STAGING_BINDIR_NATIVE}/perl-native/|/usr/bin/env |g' ${D}${bindir}/pstops
+    for f in psbook psresize psnup psselect; do
+        grep -v '${B}' ${D}${bindir}/$f > ${D}${bindir}/$f.temp
+        install -m 0755 ${D}${bindir}/$f.temp ${D}${bindir}/$f
+        rm -f ${D}${bindir}/$f.temp
+    done
+}
+
+BBCLASSEXTEND += "native"
+# /usr/bin/pstops contained in package psutils requires perl
+RDEPENDS:${PN} += "perl"
diff --git a/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind/0001-configure.ac-fix-C-11-support-check.patch b/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind/0001-configure.ac-fix-C-11-support-check.patch
new file mode 100644
index 0000000..815939b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind/0001-configure.ac-fix-C-11-support-check.patch
@@ -0,0 +1,37 @@
+From 9070bc210b2ecff641b73e4ade30040c1461969c Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 3 May 2023 18:31:57 +0200
+Subject: [PATCH] configure.ac: fix C++11 support check
+
+* with -Werror=return-type in CFLAGS this test fails with:
+
+  configure:4290: checking for C++11 support or better
+  configure:4303: x86_64-webos-linux-g++  -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse -fstack-protector-strong  -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -Werror=return-type --sysroot=/OE/lge/build/webos/mickledore/BUILD/work/qemux86_64-webos-linux/rdfind/1.5.0-r0/recipe-sysroot -c  -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=/OE/lge/build/webos/mickledore/BUILD/work/qemux86_64-webos-linux/rdfind/1.5.0-r0/rdfind-1.5.0=/usr/src/debug/rdfind/1.5.0-r0  -fdebug-prefix-map=/OE/lge/build/webos/mickledore/BUILD/work/qemux86_64-webos-linux/rdfind/1.5.0-r0/rdfind-1.5.0=/usr/src/debug/rdfind/1.5.0-r0  -fmacro-prefix-map=/OE/lge/build/webos/mickledore/BUILD/work/qemux86_64-webos-linux/rdfind/1.5.0-r0/build=/usr/src/debug/rdfind/1.5.0-r0  -fdebug-prefix-map=/OE/lge/build/webos/mickledore/BUILD/work/qemux86_64-webos-linux/rdfind/1.5.0-r0/build=/usr/src/debug/rdfind/1.5.0-r0  -fdebug-prefix-map=/OE/lge/build/webos/mickledore/BUILD/work/qemux86_64-webos-linux/rdfind/1.5.0-r0/recipe-sysroot=  -fmacro-prefix-map=/OE/lge/build/webos/mickledore/BUILD/work/qemux86_64-webos-linux/rdfind/1.5.0-r0/recipe-sysroot=  -fdebug-prefix-map=/OE/lge/build/webos/mickledore/BUILD/work/qemux86_64-webos-linux/rdfind/1.5.0-r0/recipe-sysroot-native=  -fvisibility-inlines-hidden   conftest.cpp >&5
+  conftest.cpp: In function 'int f()':
+  conftest.cpp:22:20: error: no return statement in function returning non-void [-Werror=return-type]
+     22 | int f() { auto a=1;}                                                                                                                                                                                                                        |                    ^
+  cc1plus: some warnings being treated as errors
+  ...
+  configure:4308: error: no c++11 support, please set CXXFLAGS properly
+
+* fix the test to pass
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Upstream-Status: Submitted [https://github.com/pauldreik/rdfind/pull/132]
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index be1b2fd..9c3513c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -64,7 +64,7 @@ AC_SYS_LARGEFILE
+ 
+ dnl make sure we have c++11 or better,
+ AC_MSG_CHECKING([for C++11 support or better])
+-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int f() { auto a=1;}])],
++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int f() { auto a=1;return a;}])],
+                   [AC_MSG_RESULT([yes])],
+ 		  [AC_MSG_ERROR([no c++11 support, please set CXXFLAGS properly])])
+ 
diff --git a/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.5.0.bb b/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.5.0.bb
index 8f2c5e8..dab66c3 100644
--- a/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.5.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/rdfind/rdfind_1.5.0.bb
@@ -8,6 +8,7 @@
 SRC_URI = "https://rdfind.pauldreik.se/${BP}.tar.gz \
            file://0001-configure-Fix-check-for-AC_CHECK_LIB.patch \
            file://0001-include-standard-headers-limits-and-cstdint.patch \
+           file://0001-configure.ac-fix-C-11-support-check.patch \
 "
 
 SRC_URI[sha256sum] = "4150ed1256f7b12b928c65113c485761552b9496c433778aac3f9afc3e767080"
diff --git a/meta-openembedded/meta-oe/recipes-support/serial/serial/Findcatkin.cmake b/meta-openembedded/meta-oe/recipes-support/serial/serial/Findcatkin.cmake
new file mode 100644
index 0000000..2f93564
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/serial/serial/Findcatkin.cmake
@@ -0,0 +1,5 @@
+# Work-around for https://github.com/wjwwood/serial/issues/135
+
+function(catkin_package)
+endfunction()
+
diff --git a/meta-openembedded/meta-oe/recipes-support/serial/serial_1.2.1.bb b/meta-openembedded/meta-oe/recipes-support/serial/serial_1.2.1.bb
new file mode 100644
index 0000000..8c1fb06
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/serial/serial_1.2.1.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Cross-platform library for interfacing with rs-232 serial like ports"
+HOMEPAGE = "http://wjwwood.io/serial/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://README.md;beginline=53;endline=62;md5=049c68d559533f90250404746e6a1045"
+
+SRC_URI = " \
+    git://github.com/wjwwood/${BPN}.git;protocol=https;branch=main \
+    file://Findcatkin.cmake \
+"
+SRCREV = "10ac4e1c25c2cda1dc0a32a8e12b87fd89f3bb4f"
+SRC_URI[sha256sum] = "c8cd235dda2ef7d977ba06dfcb35c35e42f45cfd9149ba3ad257756123d8ff96"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+# Work-around for https://github.com/wjwwood/serial/issues/135
+EXTRA_OECMAKE = " \
+    -DCMAKE_MODULE_PATH=${WORKDIR} \
+    -DCATKIN_PACKAGE_LIB_DESTINATION=${libdir} \
+    -DCATKIN_PACKAGE_BIN_DESTINATION=${bindir} \
+    -DCATKIN_GLOBAL_INCLUDE_DESTINATION=${includedir} \
+    -DCATKIN_ENABLE_TESTING=OFF \
+"
+
+# Do not depend on the main package since it will be empty
+RDEPENDS:${PN}-dev = ""
+