diff --git a/gnu/local.mk b/gnu/local.mk
index fcd9024ce3..84fcb9c54e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -61,6 +61,7 @@
 # Copyright © 2023 Andy Tai <atai@atai.org>
 # Copyright © 2023 B. Wilson <elaexuotee@wilsonb.com>
 # Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
+# Copyright © 2023 Herman Rimm <herman@rimm.ee>
 #
 # This file is part of GNU Guix.
 #
@@ -2056,13 +2057,10 @@ dist_patch_DATA =						\
   %D%/packages/patches/tuxpaint-stamps-path.patch		\
   %D%/packages/patches/twinkle-bcg729.patch			\
   %D%/packages/patches/u-boot-allow-disabling-openssl.patch	\
-  %D%/packages/patches/u-boot-fix-build-python-3.10.patch	\
-  %D%/packages/patches/u-boot-fix-u-boot-lib-build.patch	\
   %D%/packages/patches/u-boot-nintendo-nes-serial.patch		\
   %D%/packages/patches/u-boot-patman-change-id.patch	\
   %D%/packages/patches/u-boot-rockchip-inno-usb.patch		\
   %D%/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch	\
-  %D%/packages/patches/u-boot-rk3399-enable-emmc-phy.patch	\
   %D%/packages/patches/ucx-tcp-iface-ioctl.patch		\
   %D%/packages/patches/ultrastar-deluxe-no-freesans.patch		\
   %D%/packages/patches/ungoogled-chromium-extension-search-path.patch	\
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index fb20ba0efa..5da696388a 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -18,6 +18,7 @@
 ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
 ;;; Copyright © 2021 Stefan <stefan-guix@vodafonemail.de>
 ;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2023 Herman Rimm <herman@rimm.ee>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -637,24 +638,15 @@ (define %u-boot-allow-disabling-openssl-patch
   ;; https://lists.denx.de/pipermail/u-boot/2021-October/462728.html
   (search-patch "u-boot-allow-disabling-openssl.patch"))
 
-(define %u-boot-rk3399-enable-emmc-phy-patch
-  ;; Fix emmc boot on rockpro64 and pinebook-pro, this was a regression
-  ;; therefore should hopefully be fixed when updating u-boot.
-  ;; https://lists.denx.de/pipermail/u-boot/2021-November/466329.html
-  (search-patch "u-boot-rk3399-enable-emmc-phy.patch"))
-
 (define u-boot
   (package
     (name "u-boot")
-    (version "2023.07.02")
+    (version "2023.10")
     (source (origin
               (patches
                (list %u-boot-rockchip-inno-usb-patch
                      %u-boot-allow-disabling-openssl-patch
                      %u-boot-sifive-prevent-relocating-initrd-fdt
-                     %u-boot-rk3399-enable-emmc-phy-patch
-                     (search-patch "u-boot-fix-build-python-3.10.patch")
-                     (search-patch "u-boot-fix-u-boot-lib-build.patch")
                      (search-patch "u-boot-patman-change-id.patch")))
               (method url-fetch)
               (uri (string-append
@@ -662,7 +654,7 @@ (define u-boot
                     "u-boot-" version ".tar.bz2"))
               (sha256
                (base32
-                "1m91w3fpywllkwm000dqsw3294j0szs1lz6qbgwv1aql3ic4hskb"))))
+                "0039rravvjq9yi41645fynycw4c869px024xfc0n212f05pnq3p0"))))
     (build-system gnu-build-system)
     (native-inputs
      (list bison
diff --git a/gnu/packages/patches/u-boot-allow-disabling-openssl.patch b/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
index 5195a7a6f8..708ed81e93 100644
--- a/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
+++ b/gnu/packages/patches/u-boot-allow-disabling-openssl.patch
@@ -8,8 +8,10 @@ This reverts commit b4f3cc2c42d97967a3a3c8796c340f6b07ecccac.
 Addendum 2022-12-08, Ricardo Wurmus: This patch has been updated to introduce
 CONFIG_FIT_PRELOAD to remove fit_pre_load_data, which depends on openssl.
 
+Addendum 2023-10-17, Herman Rimm: Update patch for u-boot v2023.10.
+
 diff --git a/tools/kwbimage.c b/tools/kwbimage.c
-index 94b7685392..eec599b0ee 100644
+index 4dce495ff0..976174ae77 100644
 --- a/tools/kwbimage.c
 +++ b/tools/kwbimage.c
 @@ -19,6 +19,7 @@
@@ -38,7 +40,7 @@ index 94b7685392..eec599b0ee 100644
  
  struct boot_mode {
  	unsigned int id;
-@@ -278,6 +282,8 @@ image_count_options(unsigned int optiontype)
+@@ -281,6 +285,8 @@ image_count_options(unsigned int optiontype)
  	return count;
  }
  
@@ -47,7 +49,7 @@ index 94b7685392..eec599b0ee 100644
  static int image_get_csk_index(void)
  {
  	struct image_cfg_element *e;
-@@ -288,6 +294,7 @@ static int image_get_csk_index(void)
+@@ -291,6 +297,7 @@ static int image_get_csk_index(void)
  
  	return e->csk_idx;
  }
@@ -55,7 +57,7 @@ index 94b7685392..eec599b0ee 100644
  
  static bool image_get_spezialized_img(void)
  {
-@@ -432,6 +439,7 @@ static uint8_t baudrate_to_option(unsigned int baudrate)
+@@ -435,6 +442,7 @@ static uint8_t baudrate_to_option(unsigned int baudrate)
  	}
  }
  
@@ -63,29 +65,31 @@ index 94b7685392..eec599b0ee 100644
  static void kwb_msg(const char *fmt, ...)
  {
  	if (verbose_mode) {
-@@ -926,6 +934,7 @@ static int kwb_dump_fuse_cmds(struct secure_hdr_v1 *sec_hdr)
+@@ -929,6 +937,7 @@ static int kwb_dump_fuse_cmds(struct secure_hdr_v1 *sec_hdr)
  done:
  	return ret;
  }
 +#endif
  
- static size_t image_headersz_align(size_t headersz, uint8_t blockid)
+ static int image_fill_xip_header(void *image, struct image_tool_params *params)
  {
-@@ -1079,11 +1088,13 @@ static size_t image_headersz_v1(int *hasext)
- 	 */
- 	headersz = sizeof(struct main_hdr_v1);
+@@ -1149,13 +1158,13 @@ static size_t image_headersz_v1(int *hasext)
+ 	int ret;
  
+ 	headersz = sizeof(struct main_hdr_v1);
+-
 +#if defined(CONFIG_KWB_SECURE)
  	if (image_get_csk_index() >= 0) {
  		headersz += sizeof(struct secure_hdr_v1);
  		if (hasext)
  			*hasext = 1;
  	}
+-
 +#endif
- 
  	cpu_sheeva = image_is_cpu_sheeva();
  
-@@ -1270,6 +1281,7 @@ err_close:
+ 	count = 0;
+@@ -1351,6 +1360,7 @@ err_close:
  	return -1;
  }
  
@@ -93,7 +97,7 @@ index 94b7685392..eec599b0ee 100644
  static int export_pub_kak_hash(RSA *kak, struct secure_hdr_v1 *secure_hdr)
  {
  	FILE *hashf;
-@@ -1382,6 +1394,7 @@ static int add_secure_header_v1(struct image_tool_params *params, uint8_t *ptr,
+@@ -1458,6 +1468,7 @@ static int add_secure_header_v1(struct image_tool_params *params, uint8_t *image
  
  	return 0;
  }
@@ -101,9 +105,9 @@ index 94b7685392..eec599b0ee 100644
  
  static void finish_register_set_header_v1(uint8_t **cur, uint8_t **next_ext,
  					  struct register_set_hdr_v1 *register_set_hdr,
-@@ -1406,7 +1419,9 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
+@@ -1481,7 +1492,9 @@ static void *image_create_v1(size_t *dataoff, struct image_tool_params *params,
+ 	struct image_cfg_element *e;
  	struct main_hdr_v1 *main_hdr;
- 	struct opt_hdr_v1 *ohdr;
  	struct register_set_hdr_v1 *register_set_hdr;
 +#if defined(CONFIG_KWB_SECURE)
  	struct secure_hdr_v1 *secure_hdr = NULL;
@@ -111,15 +115,16 @@ index 94b7685392..eec599b0ee 100644
  	size_t headersz;
  	uint8_t *image, *cur;
  	int hasext = 0;
-@@ -1491,6 +1506,7 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
- 	if (main_hdr->blockid == IBR_HDR_PEX_ID)
- 		main_hdr->srcaddr = cpu_to_le32(0xFFFFFFFF);
- 
+@@ -1562,7 +1575,7 @@ static void *image_create_v1(size_t *dataoff, struct image_tool_params *params,
+ 		}
+ 		*dataoff = le32_to_cpu(main_hdr->srcaddr);
+ 	}
+-
 +#if defined(CONFIG_KWB_SECURE)
  	if (image_get_csk_index() >= 0) {
  		/*
  		 * only reserve the space here; we fill the header later since
-@@ -1501,7 +1517,7 @@ static void *image_create_v1(size_t *imagesz, struct image_tool_params *params,
+@@ -1573,7 +1586,7 @@ static void *image_create_v1(size_t *dataoff, struct image_tool_params *params,
  		*next_ext = 1;
  		next_ext = &secure_hdr->next;
  	}
@@ -128,7 +133,7 @@ index 94b7685392..eec599b0ee 100644
  	datai = 0;
  	for (cfgi = 0; cfgi < cfgn; cfgi++) {
  		e = &image_cfg[cfgi];
-@@ -1624,10 +1640,12 @@ static void *image_create_v1(size_t *dataoff, struct image_tool_params *params,
+@@ -1624,9 +1637,11 @@ static void *image_create_v1(size_t *dataoff, struct image_tool_params *params,
  					      &datai, delay);
  	}
  
@@ -140,7 +145,6 @@ index 94b7685392..eec599b0ee 100644
  
  	/* Calculate and set the header checksum */
  	main_hdr->checksum = image_checksum8(main_hdr, headersz);
- 
 --- a/tools/image-host.c
 +++ b/tools/image-host.c
 @@ -14,8 +14,10 @@
@@ -154,7 +158,7 @@ index 94b7685392..eec599b0ee 100644
  
  /**
   * fit_set_hash_value - set hash value in requested has node
-@@ -1116,6 +1118,7 @@
+@@ -1119,6 +1121,7 @@ static int fit_config_add_verification_data(const char *keydir,
  	return 0;
  }
  
@@ -162,7 +166,7 @@ index 94b7685392..eec599b0ee 100644
  /*
   * 0) open file (open)
   * 1) read certificate (PEM_read_X509)
-@@ -1224,6 +1227,7 @@
+@@ -1227,6 +1230,7 @@ int fit_pre_load_data(const char *keydir, void *keydest, void *fit)
   out:
  	return ret;
  }
@@ -172,7 +176,7 @@ index 94b7685392..eec599b0ee 100644
  		    const char *comment, int require_keys,
 --- a/tools/fit_image.c
 +++ b/tools/fit_image.c
-@@ -59,9 +59,10 @@
+@@ -61,9 +61,10 @@ static int fit_add_file_data(struct image_tool_params *params, size_t size_inc,
  		ret = fit_set_timestamp(ptr, 0, time);
  	}
  
@@ -186,7 +190,7 @@ index 94b7685392..eec599b0ee 100644
  				      params->comment,
 --- a/include/image.h
 +++ b/include/image.h
-@@ -1090,6 +1090,7 @@
+@@ -1182,6 +1182,7 @@ int fit_image_hash_get_value(const void *fit, int noffset, uint8_t **value,
  
  int fit_set_timestamp(void *fit, int noffset, time_t timestamp);
  
@@ -194,7 +198,7 @@ index 94b7685392..eec599b0ee 100644
  /**
   * fit_pre_load_data() - add public key to fdt blob
   *
-@@ -1104,6 +1105,7 @@
+@@ -1196,6 +1197,7 @@ int fit_set_timestamp(void *fit, int noffset, time_t timestamp);
   *	< 0, on failure
   */
  int fit_pre_load_data(const char *keydir, void *keydest, void *fit);
diff --git a/gnu/packages/patches/u-boot-fix-build-python-3.10.patch b/gnu/packages/patches/u-boot-fix-build-python-3.10.patch
deleted file mode 100644
index 7e5d6ba656..0000000000
--- a/gnu/packages/patches/u-boot-fix-build-python-3.10.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-This patch is backported from U-Boot 2023.01; remove when updating.
-
-From 7d01bb1c5a1daef0187c9ea276bde19a8d0e7fde Mon Sep 17 00:00:00 2001
-From: Michal Suchanek <msuchanek@suse.de>
-Date: Thu, 13 Oct 2022 22:43:41 +0200
-Subject: [PATCH] libfdt: Fix build with python 3.10
-
-Python 3.10 requires defining PY_SSIZE_T_CLEAN. This will be fixed in
-swig 4.10 but it is not clear when it will be released. There was a
-warning since python 3.8.
-
-Link: https://github.com/swig/swig/pull/2277
-
-Signed-off-by: Michal Suchanek <msuchanek@suse.de>
-Reviewed-by: Simon Glass <sjg@chromium.org>
----
- scripts/dtc/pylibfdt/libfdt.i_shipped | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/scripts/dtc/pylibfdt/libfdt.i_shipped b/scripts/dtc/pylibfdt/libfdt.i_shipped
-index 27c29ea260..56cc5d48f4 100644
---- a/scripts/dtc/pylibfdt/libfdt.i_shipped
-+++ b/scripts/dtc/pylibfdt/libfdt.i_shipped
-@@ -7,6 +7,10 @@
- 
- %module libfdt
- 
-+%begin %{
-+#define PY_SSIZE_T_CLEAN
-+%}
-+
- %include <stdint.i>
- 
- %{
--- 
-GitLab
-
diff --git a/gnu/packages/patches/u-boot-fix-u-boot-lib-build.patch b/gnu/packages/patches/u-boot-fix-u-boot-lib-build.patch
deleted file mode 100644
index 233c437de6..0000000000
--- a/gnu/packages/patches/u-boot-fix-u-boot-lib-build.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Submitted upstream (see:
-https://lists.denx.de/pipermail/u-boot/2023-July/521984.html)
-
-diff --git a/tools/u_boot_pylib/pyproject.toml b/tools/u_boot_pylib/pyproject.toml
-index 3f33caf6f8..037c5d629e 100644
---- a/tools/u_boot_pylib/pyproject.toml
-+++ b/tools/u_boot_pylib/pyproject.toml
-@@ -9,7 +9,7 @@ authors = [
-   { name="Simon Glass", email="sjg@chromium.org" },
- ]
- description = "U-Boot python library"
--readme = "README.md"
-+readme = "README.rst"
- requires-python = ">=3.7"
- classifiers = [
-     "Programming Language :: Python :: 3",
-@@ -20,3 +20,7 @@ classifiers = [
- [project.urls]
- "Homepage" = "https://u-boot.readthedocs.io"
- "Bug Tracker" = "https://source.denx.de/groups/u-boot/-/issues"
-+
-+[tool.setuptools.packages.find]
-+where = [".."]
-+include = ["u_boot_pylib*"]
diff --git a/gnu/packages/patches/u-boot-rk3399-enable-emmc-phy.patch b/gnu/packages/patches/u-boot-rk3399-enable-emmc-phy.patch
deleted file mode 100644
index f14a9ce104..0000000000
--- a/gnu/packages/patches/u-boot-rk3399-enable-emmc-phy.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-adapting commit ac804143cf ("mmc: rockchip_sdhci: add phy and clock
-config for rk3399") to fix the issue "Not found emmc phy device".
-
-Signed-off-by: Yifeng Zhao <yifeng.zhao@rock-chips.com>
----
-
- arch/arm/dts/rk3399-u-boot.dtsi | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
-index 73922c328a..716b9a433a 100644
---- a/arch/arm/dts/rk3399-u-boot.dtsi
-+++ b/arch/arm/dts/rk3399-u-boot.dtsi
-@@ -88,6 +88,10 @@
- 	u-boot,dm-pre-reloc;
- };
- 
-+&emmc_phy {
-+	u-boot,dm-pre-reloc;
-+};
-+
- &grf {
- 	u-boot,dm-pre-reloc;
- };
--- 
-2.17.1
diff --git a/gnu/packages/patches/u-boot-rockchip-inno-usb.patch b/gnu/packages/patches/u-boot-rockchip-inno-usb.patch
index 58f04b2c78..eeb25f4b89 100644
--- a/gnu/packages/patches/u-boot-rockchip-inno-usb.patch
+++ b/gnu/packages/patches/u-boot-rockchip-inno-usb.patch
@@ -170,10 +170,10 @@ Tested-by: Peter Robinson <pbrobinson@gmail.com>
  1 file changed, 21 insertions(+)
 
 diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
-index 62b8ba3a4a..be9cc99d90 100644
+index 70e61eccb7..ce36db94a7 100644
 --- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
 +++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
-@@ -62,6 +62,8 @@ struct rockchip_usb2phy {
+@@ -64,6 +64,8 @@ struct rockchip_usb2phy {
  	void *reg_base;
  	struct clk phyclk;
  	const struct rockchip_usb2phy_cfg *phy_cfg;
@@ -182,7 +182,7 @@ index 62b8ba3a4a..be9cc99d90 100644
  };
  
  static inline int property_enable(void *reg_base,
-@@ -92,6 +94,10 @@ static int rockchip_usb2phy_power_on(struct phy *phy)
+@@ -106,6 +108,10 @@ static int rockchip_usb2phy_power_on(struct phy *phy)
  	struct rockchip_usb2phy *priv = dev_get_priv(parent);
  	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
  
@@ -193,7 +193,7 @@ index 62b8ba3a4a..be9cc99d90 100644
  	property_enable(priv->reg_base, &port_cfg->phy_sus, false);
  
  	/* waiting for the utmi_clk to become stable */
-@@ -106,6 +112,10 @@ static int rockchip_usb2phy_power_off(struct phy *phy)
+@@ -120,6 +126,10 @@ static int rockchip_usb2phy_power_off(struct phy *phy)
  	struct rockchip_usb2phy *priv = dev_get_priv(parent);
  	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
  
@@ -204,7 +204,7 @@ index 62b8ba3a4a..be9cc99d90 100644
  	property_enable(priv->reg_base, &port_cfg->phy_sus, true);
  
  	return 0;
-@@ -118,6 +128,10 @@ static int rockchip_usb2phy_init(struct phy *phy)
+@@ -132,6 +142,10 @@ static int rockchip_usb2phy_init(struct phy *phy)
  	const struct rockchip_usb2phy_port_cfg *port_cfg = us2phy_get_port(phy);
  	int ret;
  
@@ -213,9 +213,9 @@ index 62b8ba3a4a..be9cc99d90 100644
 +		return 0;
 +
  	ret = clk_enable(&priv->phyclk);
- 	if (ret) {
+ 	if (ret && ret != -ENOSYS) {
  		dev_err(phy->dev, "failed to enable phyclk (ret=%d)\n", ret);
-@@ -140,6 +154,10 @@ static int rockchip_usb2phy_exit(struct phy *phy)
+@@ -154,6 +168,10 @@ static int rockchip_usb2phy_exit(struct phy *phy)
  	struct udevice *parent = dev_get_parent(phy->dev);
  	struct rockchip_usb2phy *priv = dev_get_priv(parent);
  
@@ -226,7 +226,7 @@ index 62b8ba3a4a..be9cc99d90 100644
  	clk_disable(&priv->phyclk);
  
  	return 0;
-@@ -212,6 +230,9 @@ static int rockchip_usb2phy_probe(struct udevice *dev)
+@@ -294,6 +312,9 @@ static int rockchip_usb2phy_probe(struct udevice *dev)
  		return ret;
  	}
  
