diff --git a/Cargo.lock b/Cargo.lock
index d5f837259f10a0f550c6d04c148976b1f56d3efd..190308240542cdde487a582c2a6991cf0540768e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
 
 [[package]]
 name = "addr2line"
-version = "0.19.0"
+version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
+checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
 dependencies = [
  "gimli",
 ]
@@ -31,24 +31,24 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "1.0.2"
+version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "anyhow"
-version = "1.0.71"
+version = "1.0.75"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
+checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
 
 [[package]]
 name = "argh"
-version = "0.1.10"
+version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab257697eb9496bf75526f0217b5ed64636a9cfafa78b8365c71bd283fcef93e"
+checksum = "7af5ba06967ff7214ce4c7419c7d185be7ecd6cc4965a8f6e1d8ce0398aad219"
 dependencies = [
  "argh_derive",
  "argh_shared",
@@ -56,21 +56,24 @@ dependencies = [
 
 [[package]]
 name = "argh_derive"
-version = "0.1.10"
+version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b382dbd3288e053331f03399e1db106c9fb0d8562ad62cb04859ae926f324fa6"
+checksum = "56df0aeedf6b7a2fc67d06db35b09684c3e8da0c95f8f27685cb17e08413d87a"
 dependencies = [
  "argh_shared",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "argh_shared"
-version = "0.1.10"
+version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64cb94155d965e3d37ffbbe7cc5b82c3dd79dd33bd48e536f73d2cfb8d85506f"
+checksum = "5693f39141bda5760ecc4111ab08da40565d1771038c4a0250f03457ec707531"
+dependencies = [
+ "serde",
+]
 
 [[package]]
 name = "arrayvec"
@@ -128,17 +131,17 @@ dependencies = [
  "log",
  "parking",
  "polling",
- "rustix",
+ "rustix 0.37.23",
  "slab",
- "socket2",
+ "socket2 0.4.9",
  "waker-fn",
 ]
 
 [[package]]
 name = "async-lock"
-version = "2.7.0"
+version = "2.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7"
+checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
 dependencies = [
  "event-listener",
 ]
@@ -149,16 +152,16 @@ version = "0.1.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28"
 dependencies = [
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
 ]
 
 [[package]]
 name = "atomic-polyfill"
-version = "1.0.2"
+version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c314e70d181aa6053b26e3f7fbf86d1dfff84f816a6175b967666b3506ef7289"
+checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4"
 dependencies = [
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
 ]
 
 [[package]]
@@ -169,7 +172,7 @@ checksum = "58c5fc22e05ec2884db458bf307dc7b278c9428888d2b6e6fad9c0ae7804f5f6"
 dependencies = [
  "as-slice 0.1.5",
  "as-slice 0.2.1",
- "atomic-polyfill 1.0.2",
+ "atomic-polyfill 1.0.3",
  "stable_deref_trait",
 ]
 
@@ -198,9 +201,9 @@ checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973"
 
 [[package]]
 name = "backtrace"
-version = "0.3.67"
+version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"
+checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
 dependencies = [
  "addr2line",
  "cc",
@@ -234,9 +237,9 @@ checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
 
 [[package]]
 name = "base64"
-version = "0.21.2"
+version = "0.21.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
+checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2"
 
 [[package]]
 name = "base64ct"
@@ -282,6 +285,12 @@ version = "1.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
+[[package]]
+name = "bitflags"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
+
 [[package]]
 name = "block-buffer"
 version = "0.9.0"
@@ -312,15 +321,15 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.13.0"
+version = "3.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
 
 [[package]]
 name = "bytemuck"
-version = "1.13.1"
+version = "1.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea"
+checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
 
 [[package]]
 name = "byteorder"
@@ -330,31 +339,34 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
 
 [[package]]
 name = "bytes"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
 
 [[package]]
 name = "caprand"
 version = "0.1.0"
-source = "git+https://github.com/mkj/caprand#a292401a503b422993ee6052a0f6fd316d6bff5c"
+source = "git+https://github.com/mkj/caprand#e61c28c5f4cbb4b2c91b966a5a3f3170e9cc5f65"
 dependencies = [
  "cortex-m",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "embassy-rp",
  "getrandom 0.2.10",
  "log",
  "rand 0.8.5",
  "rand_chacha 0.3.1",
  "rp-pac",
- "sha2 0.10.7",
+ "sha2 0.10.8",
 ]
 
 [[package]]
 name = "cc"
-version = "1.0.79"
+version = "1.0.83"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+dependencies = [
+ "libc",
+]
 
 [[package]]
 name = "cfg-if"
@@ -396,18 +408,18 @@ dependencies = [
 
 [[package]]
 name = "concurrent-queue"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c"
+checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400"
 dependencies = [
  "crossbeam-utils",
 ]
 
 [[package]]
 name = "const-oid"
-version = "0.9.2"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "520fbf3c07483f94e3e3ca9d0cfd913d7718ef2483d2cfd91c0d9e91474ab913"
+checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
 
 [[package]]
 name = "cortex-m"
@@ -417,7 +429,7 @@ checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9"
 dependencies = [
  "bare-metal 0.2.5",
  "bitfield",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "embedded-hal 0.2.7",
  "volatile-register",
 ]
@@ -444,9 +456,9 @@ dependencies = [
 
 [[package]]
 name = "cpufeatures"
-version = "0.2.8"
+version = "0.2.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c"
+checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
 dependencies = [
  "libc",
 ]
@@ -467,14 +479,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c1706d332edc22aef4d9f23a6bb1c92360a403013c291af51247a737472dcae6"
 dependencies = [
  "bare-metal 1.0.0",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
 ]
 
 [[package]]
 name = "critical-section"
-version = "1.1.1"
+version = "1.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52"
+checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216"
 
 [[package]]
 name = "crossbeam-utils"
@@ -558,23 +570,22 @@ source = "git+https://github.com/mkj/curve25519-dalek?branch=sunset#e4d2869ade3a
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "cyw43"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
- "atomic-polyfill 0.1.11",
  "cortex-m",
  "cortex-m-rt",
  "defmt",
  "embassy-futures",
  "embassy-net-driver-channel",
- "embassy-sync 0.2.0 (git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed)",
+ "embassy-sync",
  "embassy-time",
- "embedded-hal 1.0.0-alpha.11",
+ "embedded-hal 1.0.0-rc.1",
  "futures",
  "num_enum",
 ]
@@ -582,7 +593,7 @@ dependencies = [
 [[package]]
 name = "cyw43-pio"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "cyw43",
  "embassy-rp",
@@ -603,12 +614,12 @@ dependencies = [
 
 [[package]]
 name = "darling"
-version = "0.20.1"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944"
+checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
 dependencies = [
- "darling_core 0.20.1",
- "darling_macro 0.20.1",
+ "darling_core 0.20.3",
+ "darling_macro 0.20.3",
 ]
 
 [[package]]
@@ -627,16 +638,16 @@ dependencies = [
 
 [[package]]
 name = "darling_core"
-version = "0.20.1"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb"
+checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621"
 dependencies = [
  "fnv",
  "ident_case",
  "proc-macro2",
  "quote",
  "strsim",
- "syn 2.0.28",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -652,13 +663,13 @@ dependencies = [
 
 [[package]]
 name = "darling_macro"
-version = "0.20.1"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a"
+checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
 dependencies = [
- "darling_core 0.20.1",
+ "darling_core 0.20.3",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -669,25 +680,25 @@ checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e"
 
 [[package]]
 name = "defmt"
-version = "0.3.4"
+version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "956673bd3cb347512bf988d1e8d89ac9a82b64f6eec54d3c01c3529dac019882"
+checksum = "a8a2d011b2fee29fb7d659b83c43fce9a2cb4df453e16d441a51448e448f3f98"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "defmt-macros",
 ]
 
 [[package]]
 name = "defmt-macros"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4abc4821bd84d3d8f49945ddb24d029be9385ed9b77c99bf2f6296847a6a9f0"
+checksum = "54f0216f6c5acb5ae1a47050a6645024e6edafc2ee32d421955eccfef12ef92e"
 dependencies = [
  "defmt-parser",
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -720,6 +731,12 @@ dependencies = [
  "zeroize",
 ]
 
+[[package]]
+name = "deranged"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946"
+
 [[package]]
 name = "diff"
 version = "0.1.13"
@@ -797,9 +814,9 @@ dependencies = [
 
 [[package]]
 name = "ed25519"
-version = "2.2.1"
+version = "2.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fb04eee5d9d907f29e80ee6b0e78f7e2c82342c63e3580d8c4f69d9d5aad963"
+checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d"
 dependencies = [
  "signature 2.1.0",
 ]
@@ -824,18 +841,18 @@ version = "2.0.0-rc.3"
 source = "git+https://github.com/mkj/curve25519-dalek?branch=sunset#e4d2869ade3a2e511d54293a74e28be1d6125bdd"
 dependencies = [
  "curve25519-dalek 4.0.0",
- "ed25519 2.2.1",
+ "ed25519 2.2.2",
  "rand_core 0.6.4",
- "sha2 0.10.7",
+ "sha2 0.10.8",
  "subtle",
  "zeroize",
 ]
 
 [[package]]
 name = "either"
-version = "1.8.1"
+version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
 
 [[package]]
 name = "elliptic-curve"
@@ -859,13 +876,13 @@ dependencies = [
 [[package]]
 name = "embassy-embedded-hal"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "embassy-futures",
- "embassy-sync 0.2.0 (git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed)",
+ "embassy-sync",
  "embassy-time",
  "embedded-hal 0.2.7",
- "embedded-hal 1.0.0-alpha.11",
+ "embedded-hal 1.0.0-rc.1",
  "embedded-hal-async",
  "embedded-storage",
  "embedded-storage-async",
@@ -878,9 +895,9 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b4f2f7687ed60a799909eca1bf68b41e9f2ad03d740f0956a945ddabccc6aedb"
 dependencies = [
- "atomic-polyfill 1.0.2",
+ "atomic-polyfill 1.0.3",
  "cfg-if",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "embassy-macros 0.1.0",
  "embassy-time",
  "futures-util",
@@ -890,14 +907,14 @@ dependencies = [
 
 [[package]]
 name = "embassy-executor"
-version = "0.2.1"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+version = "0.3.0"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
- "atomic-polyfill 1.0.2",
+ "atomic-polyfill 1.0.3",
  "cortex-m",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "defmt",
- "embassy-macros 0.2.0",
+ "embassy-macros 0.2.1",
  "embassy-time",
  "futures-util",
  "static_cell",
@@ -906,15 +923,15 @@ dependencies = [
 [[package]]
 name = "embassy-futures"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 
 [[package]]
 name = "embassy-hal-internal"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "cortex-m",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "defmt",
  "num-traits",
 ]
@@ -933,25 +950,24 @@ dependencies = [
 
 [[package]]
 name = "embassy-macros"
-version = "0.2.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+version = "0.2.1"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
- "darling 0.20.1",
+ "darling 0.20.3",
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "embassy-net"
-version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+version = "0.2.0"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "as-slice 0.2.1",
- "atomic-polyfill 1.0.2",
  "atomic-pool",
  "embassy-net-driver",
- "embassy-sync 0.2.0 (git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed)",
+ "embassy-sync",
  "embassy-time",
  "embedded-io-async",
  "embedded-nal-async",
@@ -966,23 +982,23 @@ dependencies = [
 
 [[package]]
 name = "embassy-net-driver"
-version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+version = "0.2.0"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 
 [[package]]
 name = "embassy-net-driver-channel"
-version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+version = "0.2.0"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "embassy-futures",
  "embassy-net-driver",
- "embassy-sync 0.2.0 (git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed)",
+ "embassy-sync",
 ]
 
 [[package]]
 name = "embassy-net-tuntap"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "async-io",
  "embassy-net-driver",
@@ -991,46 +1007,45 @@ dependencies = [
 ]
 
 [[package]]
-name = "embassy-net-w5500"
+name = "embassy-net-wiznet"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "embassy-futures",
  "embassy-net-driver-channel",
  "embassy-time",
- "embedded-hal 1.0.0-alpha.11",
+ "embedded-hal 1.0.0-rc.1",
  "embedded-hal-async",
 ]
 
 [[package]]
 name = "embassy-rp"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
- "atomic-polyfill 1.0.2",
+ "atomic-polyfill 1.0.3",
  "cfg-if",
  "cortex-m",
  "cortex-m-rt",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "defmt",
  "embassy-embedded-hal",
  "embassy-futures",
  "embassy-hal-internal",
- "embassy-sync 0.2.0 (git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed)",
+ "embassy-sync",
  "embassy-time",
  "embassy-usb-driver",
  "embedded-hal 0.2.7",
- "embedded-hal 1.0.0-alpha.11",
+ "embedded-hal 1.0.0-rc.1",
  "embedded-hal-async",
  "embedded-hal-nb",
- "embedded-io 0.5.0",
+ "embedded-io",
  "embedded-io-async",
  "embedded-storage",
  "embedded-storage-async",
  "fixed",
  "futures",
  "nb 1.1.0",
- "paste",
  "pio",
  "pio-proc",
  "rand_core 0.6.4",
@@ -1040,39 +1055,25 @@ dependencies = [
 
 [[package]]
 name = "embassy-sync"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0dad296a6f70bfdc32ef52442a31f98c28e1608893c1cecc9b6f419bab005a0"
-dependencies = [
- "cfg-if",
- "critical-section 1.1.1",
- "embedded-io 0.4.0",
- "futures-util",
- "heapless",
-]
-
-[[package]]
-name = "embassy-sync"
-version = "0.2.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+version = "0.3.0"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "cfg-if",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "futures-util",
  "heapless",
 ]
 
 [[package]]
 name = "embassy-time"
-version = "0.1.2"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+version = "0.1.5"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
- "atomic-polyfill 1.0.2",
  "cfg-if",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "defmt",
  "embedded-hal 0.2.7",
- "embedded-hal 1.0.0-alpha.11",
+ "embedded-hal 1.0.0-rc.1",
  "embedded-hal-async",
  "futures-util",
  "heapless",
@@ -1082,11 +1083,11 @@ dependencies = [
 [[package]]
 name = "embassy-usb"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "embassy-futures",
  "embassy-net-driver-channel",
- "embassy-sync 0.2.0 (git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed)",
+ "embassy-sync",
  "embassy-usb-driver",
  "heapless",
  "ssmarshal",
@@ -1096,7 +1097,7 @@ dependencies = [
 [[package]]
 name = "embassy-usb-driver"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy/?rev=b6b44480457d272aace977e885d5dba252fd2bed#b6b44480457d272aace977e885d5dba252fd2bed"
+source = "git+https://github.com/embassy-rs/embassy/?rev=d496a1213c70cdabf12c802e8d39ea6abbce6720#d496a1213c70cdabf12c802e8d39ea6abbce6720"
 dependencies = [
  "defmt",
 ]
@@ -1113,63 +1114,68 @@ dependencies = [
 
 [[package]]
 name = "embedded-hal"
-version = "1.0.0-alpha.11"
+version = "1.0.0-rc.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7724ebabcadfeb15920571dd727bc8ccde8586e52f2890bdb8182fdf42c3ff2"
+checksum = "2894bc2f0457b8ca3d6b8ab8aad64d9337583672494013457f86c5a9146c0e22"
 
 [[package]]
 name = "embedded-hal-async"
-version = "0.2.0-alpha.2"
+version = "1.0.0-rc.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "918285ec7b18edb024d4adc64f6f16cdc7c4d72eadfc85c3313d1e0ff40e0229"
+checksum = "76a8a3517745342155b3b00895a0f78417a453fb800d97a8bf4777d5720acde9"
 dependencies = [
- "embedded-hal 1.0.0-alpha.11",
+ "embedded-hal 1.0.0-rc.1",
 ]
 
 [[package]]
-name = "embedded-hal-nb"
-version = "1.0.0-alpha.3"
+name = "embedded-hal-bus"
+version = "0.1.0-rc.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a09e4c3f8a54e60803405e1cc17e36c963ab32e654f8d6bb49d48cd8116360d7"
+checksum = "662822f2853efaa9629ba6d424d7b0cbf8f7f52d68a8919c9afe56e7f9dd1b2a"
 dependencies = [
- "embedded-hal 1.0.0-alpha.11",
- "nb 1.1.0",
+ "critical-section 1.1.2",
+ "embedded-hal 1.0.0-rc.1",
+ "embedded-hal-async",
 ]
 
 [[package]]
-name = "embedded-io"
-version = "0.4.0"
+name = "embedded-hal-nb"
+version = "1.0.0-rc.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
+checksum = "257e3bb0163c69195acb0ebe0083b017b963235861d5ea9741626abdc55f39c9"
+dependencies = [
+ "embedded-hal 1.0.0-rc.1",
+ "nb 1.1.0",
+]
 
 [[package]]
 name = "embedded-io"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "658bbadc628dc286b9ae02f0cb0f5411c056eb7487b72f0083203f115de94060"
+checksum = "fa9417478b5440a2c25f95b25e3ec6ec92e7f9a7ae90c9719e434daeec4ece71"
 dependencies = [
  "defmt",
 ]
 
 [[package]]
 name = "embedded-io-adapters"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8bf42b1ca6e49e960826782e3fb2721b8dac84317790b66d832fa8512edba1"
+checksum = "f5aa94ce6a11ae812b533ab3cae0b12a26f231b49324273faa2fd5f4e1775a8c"
 dependencies = [
- "embedded-io 0.5.0",
+ "embedded-io",
  "embedded-io-async",
  "tokio",
 ]
 
 [[package]]
 name = "embedded-io-async"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1394754ad749a560b25a0c70dcd2b66a450824a1311fc475bb2ccbfabe7f8414"
+checksum = "de03527d6fb488b2d7c7a4dc81dfb6a657efe264256bfc70bb899746821666b1"
 dependencies = [
  "defmt",
- "embedded-io 0.5.0",
+ "embedded-io",
 ]
 
 [[package]]
@@ -1185,9 +1191,9 @@ dependencies = [
 
 [[package]]
 name = "embedded-nal-async"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e706b5288eceaa582155b24d54e23385429402e4e99ae984f4a0a6a65b635f15"
+checksum = "a0f75f0ac83505f354443332324ef1399463902718b95b4ce153ae9b3660f341"
 dependencies = [
  "embedded-io-async",
  "embedded-nal",
@@ -1238,11 +1244,17 @@ dependencies = [
  "termcolor",
 ]
 
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
 [[package]]
 name = "errno"
-version = "0.3.1"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd"
 dependencies = [
  "errno-dragonfly",
  "libc",
@@ -1292,9 +1304,9 @@ checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77"
 
 [[package]]
 name = "fixed"
-version = "1.23.1"
+version = "1.24.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79386fdcec5e0fde91b1a6a5bcd89677d1f9304f7f986b154a1b9109038854d9"
+checksum = "02c69ce7e7c0f17aa18fdd9d0de39727adb9c6281f2ad12f57cbe54ae6e76e7d"
 dependencies = [
  "az",
  "bytemuck",
@@ -1385,7 +1397,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.37",
 ]
 
 [[package]]
@@ -1470,9 +1482,9 @@ dependencies = [
 
 [[package]]
 name = "gimli"
-version = "0.27.3"
+version = "0.28.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
+checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
 
 [[package]]
 name = "group"
@@ -1487,10 +1499,11 @@ dependencies = [
 
 [[package]]
 name = "half"
-version = "2.2.1"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0"
+checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872"
 dependencies = [
+ "cfg-if",
  "crunchy",
 ]
 
@@ -1505,9 +1518,9 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
-version = "0.12.3"
+version = "0.14.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12"
 
 [[package]]
 name = "heapless"
@@ -1540,18 +1553,9 @@ dependencies = [
 
 [[package]]
 name = "hermit-abi"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "hermit-abi"
-version = "0.3.1"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
 
 [[package]]
 name = "hmac"
@@ -1576,11 +1580,11 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
 
 [[package]]
 name = "indexmap"
-version = "1.9.3"
+version = "2.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+checksum = "ad227c3af19d4914570ad36d30409928b75967c298feb9ea1969db3a610bb14e"
 dependencies = [
- "autocfg",
+ "equivalent",
  "hashbrown",
 ]
 
@@ -1608,20 +1612,19 @@ version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
 dependencies = [
- "hermit-abi 0.3.1",
+ "hermit-abi 0.3.3",
  "libc",
  "windows-sys",
 ]
 
 [[package]]
 name = "is-terminal"
-version = "0.4.7"
+version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
+checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
 dependencies = [
- "hermit-abi 0.3.1",
- "io-lifetimes",
- "rustix",
+ "hermit-abi 0.3.3",
+ "rustix 0.38.14",
  "windows-sys",
 ]
 
@@ -1636,9 +1639,9 @@ dependencies = [
 
 [[package]]
 name = "itoa"
-version = "1.0.6"
+version = "1.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
 
 [[package]]
 name = "js-sys"
@@ -1691,9 +1694,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.146"
+version = "0.2.148"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
+checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
 
 [[package]]
 name = "libm"
@@ -1707,6 +1710,12 @@ version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
 
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128"
+
 [[package]]
 name = "lock_api"
 version = "0.4.10"
@@ -1719,9 +1728,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.19"
+version = "0.4.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
 
 [[package]]
 name = "managed"
@@ -1731,9 +1740,9 @@ checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d"
 
 [[package]]
 name = "memchr"
-version = "2.5.0"
+version = "2.6.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
 
 [[package]]
 name = "memoffset"
@@ -1746,9 +1755,9 @@ dependencies = [
 
 [[package]]
 name = "miniz_oxide"
-version = "0.6.2"
+version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
 dependencies = [
  "adler",
 ]
@@ -1787,16 +1796,15 @@ checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
 
 [[package]]
 name = "nix"
-version = "0.26.2"
+version = "0.26.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
+checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if",
  "libc",
  "memoffset",
  "pin-utils",
- "static_assertions",
 ]
 
 [[package]]
@@ -1807,9 +1815,9 @@ checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65"
 
 [[package]]
 name = "num-bigint-dig"
-version = "0.8.2"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2399c9463abc5f909349d8aa9ba080e0b88b3ce2885389b60b993f39b1a56905"
+checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151"
 dependencies = [
  "byteorder",
  "lazy_static",
@@ -1846,9 +1854,9 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.15"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
 dependencies = [
  "autocfg",
  "libm",
@@ -1856,11 +1864,11 @@ dependencies = [
 
 [[package]]
 name = "num_cpus"
-version = "1.15.0"
+version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
 dependencies = [
- "hermit-abi 0.2.6",
+ "hermit-abi 0.3.3",
  "libc",
 ]
 
@@ -1895,9 +1903,9 @@ dependencies = [
 
 [[package]]
 name = "object"
-version = "0.30.4"
+version = "0.32.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385"
+checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
 dependencies = [
  "memchr",
 ]
@@ -1922,7 +1930,7 @@ checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594"
 dependencies = [
  "ecdsa",
  "elliptic-curve",
- "sha2 0.10.7",
+ "sha2 0.10.8",
 ]
 
 [[package]]
@@ -1933,7 +1941,7 @@ checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa"
 dependencies = [
  "ecdsa",
  "elliptic-curve",
- "sha2 0.10.7",
+ "sha2 0.10.8",
 ]
 
 [[package]]
@@ -1948,9 +1956,9 @@ dependencies = [
 
 [[package]]
 name = "parking"
-version = "2.1.0"
+version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e"
+checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067"
 
 [[package]]
 name = "parking_lot"
@@ -1977,9 +1985,9 @@ dependencies = [
 
 [[package]]
 name = "paste"
-version = "1.0.12"
+version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
 
 [[package]]
 name = "pem-rfc7468"
@@ -1992,9 +2000,9 @@ dependencies = [
 
 [[package]]
 name = "petgraph"
-version = "0.6.3"
+version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4"
+checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
 dependencies = [
  "fixedbitset",
  "indexmap",
@@ -2011,9 +2019,9 @@ dependencies = [
 
 [[package]]
 name = "pin-project-lite"
-version = "0.2.9"
+version = "0.2.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
 
 [[package]]
 name = "pin-utils"
@@ -2085,9 +2093,9 @@ dependencies = [
 
 [[package]]
 name = "platforms"
-version = "3.0.2"
+version = "3.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630"
+checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8"
 
 [[package]]
 name = "polling"
@@ -2096,7 +2104,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
 dependencies = [
  "autocfg",
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if",
  "concurrent-queue",
  "libc",
@@ -2160,18 +2168,18 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.66"
+version = "1.0.67"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
 name = "quote"
-version = "1.0.32"
+version = "1.0.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
 dependencies = [
  "proc-macro2",
 ]
@@ -2253,7 +2261,7 @@ version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
@@ -2262,7 +2270,7 @@ version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
@@ -2278,13 +2286,25 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.8.4"
+version = "1.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax 0.7.5",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f"
+checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
 dependencies = [
  "aho-corasick",
  "memchr",
- "regex-syntax 0.7.2",
+ "regex-syntax 0.7.5",
 ]
 
 [[package]]
@@ -2295,9 +2315,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 
 [[package]]
 name = "regex-syntax"
-version = "0.7.2"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78"
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
 
 [[package]]
 name = "rfc6979"
@@ -2376,7 +2396,7 @@ dependencies = [
  "pkcs1",
  "pkcs8",
  "rand_core 0.6.4",
- "sha2 0.10.7",
+ "sha2 0.10.8",
  "signature 2.1.0",
  "subtle",
  "zeroize",
@@ -2413,34 +2433,47 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
 dependencies = [
- "semver 1.0.17",
+ "semver 1.0.19",
 ]
 
 [[package]]
 name = "rustix"
-version = "0.37.20"
+version = "0.37.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0"
+checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "errno",
  "io-lifetimes",
  "libc",
- "linux-raw-sys",
+ "linux-raw-sys 0.3.8",
+ "windows-sys",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f"
+dependencies = [
+ "bitflags 2.4.0",
+ "errno",
+ "libc",
+ "linux-raw-sys 0.4.7",
  "windows-sys",
 ]
 
 [[package]]
 name = "rustversion"
-version = "1.0.12"
+version = "1.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "sec1"
@@ -2467,9 +2500,9 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.17"
+version = "1.0.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
+checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0"
 
 [[package]]
 name = "semver-parser"
@@ -2479,9 +2512,23 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
 
 [[package]]
 name = "serde"
-version = "1.0.164"
+version = "1.0.188"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.188"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
 
 [[package]]
 name = "sha2"
@@ -2498,9 +2545,9 @@ dependencies = [
 
 [[package]]
 name = "sha2"
-version = "0.10.7"
+version = "0.10.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
 dependencies = [
  "cfg-if",
  "cpufeatures",
@@ -2549,24 +2596,24 @@ dependencies = [
 
 [[package]]
 name = "siphasher"
-version = "0.3.10"
+version = "0.3.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
 
 [[package]]
 name = "slab"
-version = "0.4.8"
+version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
 dependencies = [
  "autocfg",
 ]
 
 [[package]]
 name = "smallvec"
-version = "1.10.0"
+version = "1.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
 
 [[package]]
 name = "smoltcp"
@@ -2574,7 +2621,7 @@ version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8d2e3a36ac8fea7b94e666dfa3871063d6e0a5c9d5d4fec9a1a6b7b6760f0229"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "byteorder",
  "cfg-if",
  "defmt",
@@ -2584,9 +2631,9 @@ dependencies = [
 
 [[package]]
 name = "snafu"
-version = "0.7.4"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb0656e7e3ffb70f6c39b3c2a86332bb74aa3c679da781642590f3c1118c5045"
+checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6"
 dependencies = [
  "backtrace",
  "doc-comment",
@@ -2595,9 +2642,9 @@ dependencies = [
 
 [[package]]
 name = "snafu-derive"
-version = "0.7.4"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "475b3bbe5245c26f2d8a6f62d67c1f30eb9fffeccee721c45d162c3ebbdf81b2"
+checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -2615,6 +2662,16 @@ dependencies = [
  "winapi",
 ]
 
+[[package]]
+name = "socket2"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e"
+dependencies = [
+ "libc",
+ "windows-sys",
+]
+
 [[package]]
 name = "spin"
 version = "0.5.2"
@@ -2648,7 +2705,7 @@ checksum = "19cfdc32e0199062113edf41f344fbf784b8205a94600233c84eb838f45191e1"
 dependencies = [
  "base64ct",
  "pem-rfc7468",
- "sha2 0.10.7",
+ "sha2 0.10.8",
 ]
 
 [[package]]
@@ -2664,7 +2721,7 @@ dependencies = [
  "rand_core 0.6.4",
  "rsa 0.7.2",
  "sec1",
- "sha2 0.10.7",
+ "sha2 0.10.8",
  "signature 1.6.4",
  "ssh-encoding",
  "zeroize",
@@ -2686,19 +2743,13 @@ version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
 
-[[package]]
-name = "static_assertions"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-
 [[package]]
 name = "static_cell"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed6a851e9c00ce152b2bad24e8545a6db0b8646988267a6ea966d95c6932e8a2"
+checksum = "49cd323fc21eb534f903ee78d781d622099f9716c5b408ed23bcf39f8f1651c0"
 dependencies = [
- "atomic-polyfill 1.0.2",
+ "atomic-polyfill 1.0.3",
 ]
 
 [[package]]
@@ -2740,7 +2791,7 @@ dependencies = [
  "defmt",
  "digest 0.10.7",
  "ed25519-dalek 2.0.0-rc.3",
- "embedded-io 0.5.0",
+ "embedded-io",
  "futures",
  "getrandom 0.2.10",
  "heapless",
@@ -2750,7 +2801,7 @@ dependencies = [
  "pretty-hex",
  "rand_core 0.6.4",
  "rsa 0.8.2",
- "sha2 0.10.7",
+ "sha2 0.10.8",
  "signature 2.1.0",
  "simplelog",
  "snafu",
@@ -2768,7 +2819,7 @@ dependencies = [
  "anyhow",
  "argh",
  "embassy-futures",
- "embassy-sync 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "embassy-sync",
  "embedded-io-adapters",
  "embedded-io-async",
  "futures",
@@ -2799,14 +2850,14 @@ dependencies = [
  "embassy-futures",
  "embassy-net",
  "embassy-net-driver",
- "embassy-sync 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "embassy-sync",
  "embassy-time",
  "embedded-io-async",
  "heapless",
  "hmac",
  "log",
  "pretty-hex",
- "sha2 0.10.7",
+ "sha2 0.10.8",
  "sunset",
  "sunset-embassy",
  "sunset-sshwire-derive",
@@ -2820,24 +2871,26 @@ dependencies = [
  "caprand",
  "cortex-m",
  "cortex-m-rt",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "cyw43",
  "cyw43-pio",
  "defmt",
  "defmt-rtt",
- "embassy-executor 0.2.1",
+ "embassy-executor 0.3.0",
  "embassy-futures",
  "embassy-net",
  "embassy-net-driver",
- "embassy-net-w5500",
+ "embassy-net-wiznet",
  "embassy-rp",
- "embassy-sync 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "embassy-sync",
  "embassy-time",
  "embassy-usb",
  "embassy-usb-driver",
- "embedded-hal 1.0.0-alpha.11",
+ "embedded-hal 1.0.0-rc.1",
  "embedded-hal-async",
+ "embedded-hal-bus",
  "embedded-io-async",
+ "embedded-storage-async",
  "futures",
  "getrandom 0.2.10",
  "heapless",
@@ -2846,7 +2899,7 @@ dependencies = [
  "pin-utils",
  "pretty-hex",
  "rand 0.8.5",
- "sha2 0.10.7",
+ "sha2 0.10.8",
  "smoltcp",
  "snafu",
  "static_cell",
@@ -2863,12 +2916,12 @@ version = "0.1.0"
 dependencies = [
  "async-io",
  "atomic-polyfill 0.1.11",
- "critical-section 1.1.1",
+ "critical-section 1.1.2",
  "embassy-executor 0.1.1",
  "embassy-futures",
  "embassy-net",
  "embassy-net-tuntap",
- "embassy-sync 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "embassy-sync",
  "embassy-time",
  "embedded-io-async",
  "env_logger",
@@ -2876,7 +2929,7 @@ dependencies = [
  "libc",
  "log",
  "rand 0.8.5",
- "sha2 0.10.7",
+ "sha2 0.10.8",
  "static_cell",
  "sunset",
  "sunset-demo-embassy-common",
@@ -2887,10 +2940,10 @@ dependencies = [
 name = "sunset-embassy"
 version = "0.2.0-alpha"
 dependencies = [
- "atomic-polyfill 1.0.2",
+ "atomic-polyfill 1.0.3",
  "defmt",
  "embassy-futures",
- "embassy-sync 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "embassy-sync",
  "embedded-io-async",
  "log",
  "pin-utils",
@@ -2917,9 +2970,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.28"
+version = "2.0.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2948,30 +3001,31 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.40"
+version = "1.0.49"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.40"
+version = "1.0.49"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "time"
-version = "0.3.22"
+version = "0.3.29"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd"
+checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe"
 dependencies = [
+ "deranged",
  "itoa",
  "libc",
  "num_threads",
@@ -2982,15 +3036,15 @@ dependencies = [
 
 [[package]]
 name = "time-core"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
 
 [[package]]
 name = "time-macros"
-version = "0.2.9"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b"
+checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20"
 dependencies = [
  "time-core",
 ]
@@ -3006,11 +3060,11 @@ dependencies = [
 
 [[package]]
 name = "tokio"
-version = "1.28.2"
+version = "1.32.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2"
+checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
 dependencies = [
- "autocfg",
+ "backtrace",
  "bytes",
  "libc",
  "mio",
@@ -3018,7 +3072,7 @@ dependencies = [
  "parking_lot",
  "pin-project-lite",
  "signal-hook-registry",
- "socket2",
+ "socket2 0.5.4",
  "tokio-macros",
  "windows-sys",
 ]
@@ -3031,26 +3085,26 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.37",
 ]
 
 [[package]]
 name = "typenum"
-version = "1.16.0"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
 
 [[package]]
 name = "unicode-ident"
-version = "1.0.9"
+version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.10"
+version = "0.1.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 
 [[package]]
 name = "unicode-xid"
@@ -3144,9 +3198,9 @@ dependencies = [
 
 [[package]]
 name = "waker-fn"
-version = "1.1.0"
+version = "1.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
+checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690"
 
 [[package]]
 name = "wasi"
@@ -3181,7 +3235,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.37",
  "wasm-bindgen-shared",
 ]
 
@@ -3203,7 +3257,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.37",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -3226,9 +3280,9 @@ dependencies = [
 
 [[package]]
 name = "whoami"
-version = "1.4.0"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c70234412ca409cc04e864e89523cb0fc37f5e1344ebed5a3ebf4192b6b9f68"
+checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50"
 dependencies = [
  "wasm-bindgen",
  "web-sys",
@@ -3252,9 +3306,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
 name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
 dependencies = [
  "winapi",
 ]
@@ -3276,9 +3330,9 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
 dependencies = [
  "windows_aarch64_gnullvm",
  "windows_aarch64_msvc",
@@ -3291,45 +3345,45 @@ dependencies = [
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.48.0"
+version = "0.48.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "x25519-dalek"
@@ -3358,5 +3412,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.28",
+ "syn 2.0.37",
 ]
diff --git a/Cargo.toml b/Cargo.toml
index 20bc9e5187e1a891e0c3c4fef0ecf4565032dfa4..a7d444e3182e804475430229cee125e8f6b6f356 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -53,7 +53,7 @@ rsa = { version = "0.8", default-features = false, optional = true, features = [
 # TODO: getrandom feature is a workaround for missing ssh-key dependency with rsa. fixed in pending 0.6
 ssh-key = { version = "0.5", default-features = false, optional = true, features = ["getrandom"] }
 
-embedded-io = { version = "0.5", optional = true }
+embedded-io = { version = "0.6", optional = true }
 
 # for debug printing
 pretty-hex = { version = "0.3", default-features = false }
@@ -88,21 +88,22 @@ x25519-dalek = { git = "https://github.com/mkj/curve25519-dalek", branch = "suns
 # ed25519-dalek = { path = "/home/matt/3rd/rs/crypto/curve25519-dalek/ed25519-dalek" }
 # x25519-dalek = { path = "/home/matt/3rd/rs/crypto/curve25519-dalek/x25519-dalek" }
 
-embassy-executor = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-embassy-rp = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-embassy-usb = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-embassy-usb-driver = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
+embassy-executor = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-rp = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-usb = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-usb-driver = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
 # for cyw43
-embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-embassy-net-driver-channel = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-embassy-net-driver = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-embassy-net-tuntap = { git = "https://github.com/embassy-rs/embassy", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-
-cyw43 = { git = "https://github.com/embassy-rs/embassy/", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-cyw43-pio = { git = "https://github.com/embassy-rs/embassy/", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
-embassy-net-w5500 = { git = "https://github.com/embassy-rs/embassy/", rev = "b6b44480457d272aace977e885d5dba252fd2bed" }
+embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-net-driver-channel = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-net-driver = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-net-tuntap = { git = "https://github.com/embassy-rs/embassy", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+
+cyw43 = { git = "https://github.com/embassy-rs/embassy/", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+cyw43-pio = { git = "https://github.com/embassy-rs/embassy/", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
+embassy-net-wiznet = { git = "https://github.com/embassy-rs/embassy/", rev = "d496a1213c70cdabf12c802e8d39ea6abbce6720" }
 
 # embassy-net = { path = "/home/matt/3rd/rs/embassy/embassy-net" }
 # embassy-net-driver = { path = "/home/matt/3rd/rs/embassy/embassy-net-driver" }
diff --git a/async/Cargo.toml b/async/Cargo.toml
index e17a2850200ac815e728cf64d57e85832b89b7ea..f945b4ec7d31721872439d04db373feef5108d42 100644
--- a/async/Cargo.toml
+++ b/async/Cargo.toml
@@ -16,12 +16,10 @@ argh = "0.1"
 
 ssh-key = { version = "0.5", default-features = false, features = [ "std"] }
 
-embassy-sync = { version = "0.2.0" }
+embassy-sync = { version = "0.3.0" }
 embassy-futures = { version = "0.1.0" }
 
-# async feature requires nightly for async fn in trait
-# https://github.com/rust-lang/rust/issues/91611
-embedded-io-async = "0.5"
+embedded-io-async = "0.6"
 
 # "net" for AsyncFd on unix
 tokio = { version = "1.25", features = ["net", "io-util", "signal"] }
@@ -49,7 +47,7 @@ zeroize = "1.5"
 tokio = { version = "1.17", features = ["full"] }
 
 # adapters for tokio and async-std
-embedded-io-adapters = { version = "0.5", features = ["tokio-1"] }
+embedded-io-adapters = { version = "0.6", features = ["tokio-1"] }
 
 simplelog = "0.12"
 # for simplelog
diff --git a/async/rust-toolchain.toml b/async/rust-toolchain.toml
index 2b9134d8f1c40bd048185d814631b95521891ec7..ea5b5eaeb6c744099b95aa574985d98d5d67ebee 100644
--- a/async/rust-toolchain.toml
+++ b/async/rust-toolchain.toml
@@ -1,3 +1,3 @@
 [toolchain]
-channel = "nightly-2023-06-14"
+channel = "nightly-2023-10-02"
 components = [ "rustfmt" ]
diff --git a/async/src/cmdline_client.rs b/async/src/cmdline_client.rs
index faf666d4ddf3ac1e6c239fba6225f6466604ddf2..7b45c7502eafe049f93f96d590e300634c5b4e7f 100644
--- a/async/src/cmdline_client.rs
+++ b/async/src/cmdline_client.rs
@@ -329,7 +329,7 @@ impl<'a> CmdlineRunner<'a> {
             }
 
             select_biased! {
-                msg = self.notify.recv().fuse() => {
+                msg = self.notify.receive().fuse() => {
                     match msg {
                         Msg::Authed => {
                             if !matches!(self.state, CmdlineState::PreAuth) {
diff --git a/embassy/Cargo.toml b/embassy/Cargo.toml
index 155f2eeb2bf28060ce3e76409a1a4de08e3b4935..540e5e3ee72dd56ed21aab756318c6209a8b074d 100644
--- a/embassy/Cargo.toml
+++ b/embassy/Cargo.toml
@@ -7,9 +7,9 @@ categories = ["network-programming", "embedded", "no-std"]
 license = "0BSD"
 
 [dependencies]
-embassy-sync = { version = "0.2.0" }
+embassy-sync = { version = "0.3.0" }
 embassy-futures = { version = "0.1.0" }
-embedded-io-async = "0.5"
+embedded-io-async = "0.6"
 atomic-polyfill = "1.0"
 pin-utils = { version = "0.1" }
 
diff --git a/embassy/demos/common/Cargo.toml b/embassy/demos/common/Cargo.toml
index f52c06e57812cc9ba9f5de5c99a81cc5be219b00..90105569a40a2492cbd4577dbdafa624699d71c2 100644
--- a/embassy/demos/common/Cargo.toml
+++ b/embassy/demos/common/Cargo.toml
@@ -9,16 +9,16 @@ sunset-embassy = { path = "../../" }
 sunset = { path = "../../.." }
 sunset-sshwire-derive = { version = "0.1", path = "../../../sshwire-derive" }
 
-embassy-sync = { version = "0.2.0" }
-embassy-net = { version = "0.1.0", features = ["tcp", "dhcpv4", "medium-ethernet", "nightly"] }
-embassy-net-driver = { version = "0.1.0" }
+embassy-sync = { version = "0.3.0" }
+embassy-net = { version = "0.2.0", features = ["tcp", "dhcpv4", "medium-ethernet", "nightly"] }
+embassy-net-driver = { version = "0.2.0" }
 embassy-futures = { version = "0.1.0" }
 embassy-time = { version = "0.1" }
 
 heapless = "0.7.15"
 # using local fork
 # menu = "0.3"
-embedded-io-async = "0.5"
+embedded-io-async = "0.6"
 sha2 = { version = "0.10", default-features = false }
 hmac = { version = "0.12", default-features = false }
 bcrypt = { version = "0.15", default-features = false }
diff --git a/embassy/demos/picow/Cargo.toml b/embassy/demos/picow/Cargo.toml
index 1335c7e94c30076ee0eb351ca62235d1863705cb..0dc43180cecf9f485b8be4ef2ad1e555a13b0f39 100644
--- a/embassy/demos/picow/Cargo.toml
+++ b/embassy/demos/picow/Cargo.toml
@@ -14,16 +14,16 @@ cyw43-pio = { version = "0.1.0", optional = true }
 # cyw43 = { path = "/home/matt/3rd/rs/cyw43", features = ["defmt"] }
 # cyw43-pio = { path = "/home/matt/3rd/rs/cyw43/cyw43-pio" }
 
-embassy-net-w5500 = { version = "0.1.0", optional = true }
+embassy-net-wiznet = { version = "0.1.0", optional = true }
 
-embassy-executor = { version = "0.2",  features = ["defmt", "integrated-timers", "executor-thread", "arch-cortex-m", "nightly"] }
+embassy-executor = { version = "0.3",  features = ["defmt", "integrated-timers", "executor-thread", "arch-cortex-m", "nightly"] }
 embassy-time = { version = "0.1",  features = ["defmt", "defmt-timestamp-uptime", "unstable-traits", "nightly"] }
 embassy-rp = { version = "0.1.0",  features = ["defmt", "unstable-traits", "nightly", "unstable-pac", "time-driver"] }
 # embassy-net/nightly is required for asynch::Read/Write on TcpReader/TcpWriter
-embassy-net = { version = "0.1.0", features = ["tcp", "dhcpv4", "medium-ethernet", "nightly"] }
-embassy-net-driver = { version = "0.1.0" }
+embassy-net = { version = "0.2.0", features = ["tcp", "dhcpv4", "medium-ethernet", "nightly"] }
+embassy-net-driver = { version = "0.2.0" }
 embassy-usb-driver = { version = "0.1.0" }
-embassy-sync = { version = "0.2.0" }
+embassy-sync = { version = "0.3.0" }
 embassy-futures = { version = "0.1.0" }
 embassy-usb = { version = "0.1.0" }
 atomic-polyfill = "0.1.5"
@@ -42,8 +42,10 @@ cortex-m = { version = "0.7.6", features = ["critical-section-single-core"]}
 cortex-m-rt = "0.7.0"
 
 embedded-hal-1 = { package = "embedded-hal", version = "1.0.0-alpha.11" }
-embedded-hal-async = { version = "0.2.0-alpha.1" }
-embedded-io-async = "0.5"
+embedded-hal-async = { version = "1.0.0-alpha.10" }
+embedded-hal-bus = { version = "0.1.0-rc.1", features = ["async"], optional = true }
+embedded-io-async = "0.6"
+embedded-storage-async = { version = "0.4.0" }
 heapless = "0.7.15"
 
 getrandom = { version = "0.2", default-features = false, features = ["custom"]}
@@ -70,7 +72,7 @@ defmt = ["dep:defmt", "sunset/defmt", "sunset-embassy/defmt", "smoltcp/defmt"]
 # for pico w board
 cyw43 = ["dep:cyw43", "dep:cyw43-pio"]
 # for wiznet w5500-evb-pico board
-w5500 = ["dep:embassy-net-w5500"]
+w5500 = ["dep:embassy-net-wiznet", "dep:embedded-hal-bus"]
 
 # Use cyw43 firmware already on flash. This saves time when developing.
 # probe-rs-cli download firmware/43439A0.bin --format bin --chip RP2040 --base-address 0x10100000
diff --git a/embassy/demos/picow/rust-toolchain.toml b/embassy/demos/picow/rust-toolchain.toml
index d774f884a91f91b9a12601de8f36e6a4a96227ab..ea5b5eaeb6c744099b95aa574985d98d5d67ebee 100644
--- a/embassy/demos/picow/rust-toolchain.toml
+++ b/embassy/demos/picow/rust-toolchain.toml
@@ -1,6 +1,3 @@
 [toolchain]
-channel = "nightly-2023-06-14"
-components = [ "rust-src", "rustfmt" ]
-targets = [
-    "thumbv6m-none-eabi",
-]
+channel = "nightly-2023-10-02"
+components = [ "rustfmt" ]
diff --git a/embassy/demos/picow/src/flashconfig.rs b/embassy/demos/picow/src/flashconfig.rs
index 2b6e04d46c00689ff14c9ddd2c3d636d8a9da30d..3a8db089ea9da9a1f77dd8662839eef91b0d4508 100644
--- a/embassy/demos/picow/src/flashconfig.rs
+++ b/embassy/demos/picow/src/flashconfig.rs
@@ -22,6 +22,7 @@ use core::borrow::Borrow;
 use sunset_sshwire_derive::*;
 use sunset::sshwire;
 use sunset::sshwire::OwnOrBorrow;
+use embedded_storage_async::nor_flash::NorFlash;
 
 use crate::demo_common;
 use demo_common::SSHConfig;
@@ -52,9 +53,9 @@ fn config_hash(config: &SSHConfig) -> Result<[u8; 32]> {
 }
 
 /// Loads a SSHConfig at startup. Good for persisting hostkeys.
-pub fn load_or_create(flash: &mut Fl<'_>) -> Result<SSHConfig> {
+pub async fn load_or_create(flash: &mut Fl<'_>) -> Result<SSHConfig> {
     use snafu::Error;
-    match load(flash) {
+    match load(flash).await {
         Ok(c) => {
             info!("Good existing config");
             return Ok(c)
@@ -63,21 +64,21 @@ pub fn load_or_create(flash: &mut Fl<'_>) -> Result<SSHConfig> {
         Err(e) => info!("Existing config bad, making new. {}", e.description()),
     }
 
-    create(flash)
+    create(flash).await
 }
 
-pub fn create(flash: &mut Fl<'_>) -> Result<SSHConfig> {
+pub async fn create(flash: &mut Fl<'_>) -> Result<SSHConfig> {
     let c = SSHConfig::new()?;
-    if let Err(_) = save(flash, &c) {
+    if let Err(_) = save(flash, &c).await {
         warn!("Error writing config");
     }
     Ok(c)
 }
 
-pub fn load(flash: &mut Fl<'_>) -> Result<SSHConfig> {
+pub async fn load(flash: &mut Fl<'_>) -> Result<SSHConfig> {
     // let mut buf = [0u8; ERASE_SIZE];
     let mut buf = [0u8; FlashConfig::BUF_SIZE];
-    flash.read(CONFIG_OFFSET, &mut buf).map_err(|_| Error::msg("flash error"))?;
+    flash.read(CONFIG_OFFSET, &mut buf).await.map_err(|_| Error::msg("flash error"))?;
 
     // use pretty_hex::PrettyHex;
     // use core::fmt::Write;
@@ -104,7 +105,7 @@ pub fn load(flash: &mut Fl<'_>) -> Result<SSHConfig> {
     }
 }
 
-pub fn save(flash: &mut Fl<'_>, config: &SSHConfig) -> Result<()> {
+pub async fn save(flash: &mut Fl<'_>, config: &SSHConfig) -> Result<()> {
     let mut buf = [0u8; ERASE_SIZE];
     let sc = FlashConfig {
         version: SSHConfig::CURRENT_VERSION,
@@ -122,10 +123,11 @@ pub fn save(flash: &mut Fl<'_>, config: &SSHConfig) -> Result<()> {
 
     trace!("flash erase");
     flash.erase(CONFIG_OFFSET, CONFIG_OFFSET + ERASE_SIZE as u32)
+    .await
     .map_err(|_| Error::msg("flash erase error"))?;
 
     trace!("flash write");
-    flash.write(CONFIG_OFFSET, &buf)
+    flash.write(CONFIG_OFFSET, &buf).await
     .map_err(|_| Error::msg("flash write error"))?;
 
     info!("flash save done");
diff --git a/embassy/demos/picow/src/main.rs b/embassy/demos/picow/src/main.rs
index 2398d927ff891bed821d734716f35b400fb80927..f6a4e5a70f2a43d6ba0d785dd0e8a0a1504d992c 100644
--- a/embassy/demos/picow/src/main.rs
+++ b/embassy/demos/picow/src/main.rs
@@ -72,9 +72,9 @@ async fn main(spawner: Spawner) {
     let mut flash = flashconfig::Fl::new(p.FLASH, p.DMA_CH2);
 
     let config = if option_env!("RESET_CONFIG").is_some() {
-        flashconfig::create(&mut flash).unwrap()
+        flashconfig::create(&mut flash).await.unwrap()
     } else {
-        flashconfig::load_or_create(&mut flash).unwrap()
+        flashconfig::load_or_create(&mut flash).await.unwrap()
     };
     let flash = &*singleton!(SunsetMutex::new(flash));
     let config = &*singleton!(SunsetMutex::new(config));
@@ -82,13 +82,13 @@ async fn main(spawner: Spawner) {
     // A shared pipe to a local USB-serial (CDC)
     let usb_pipe = {
         let p = singleton!(takepipe::TakePipeStorage::new());
-        singleton!(p.pipe())
+        singleton!(p.build())
     };
 
     // A shared pipe to a local uart
     let serial1_pipe = {
         let s = singleton!(takepipe::TakePipeStorage::new());
-        singleton!(s.pipe())
+        singleton!(s.build())
     };
     spawner
         .spawn(serial::task(
@@ -165,7 +165,7 @@ async fn cyw43_listener(
 #[cfg(feature = "w5500")]
 #[embassy_executor::task(pool_size = 4)]
 async fn w5500_listener(
-    stack: &'static Stack<embassy_net_w5500::Device<'static>>,
+    stack: &'static Stack<embassy_net_wiznet::Device<'static>>,
     config: &'static SunsetMutex<SSHConfig>,
     global: &'static GlobalState,
 ) -> ! {
diff --git a/embassy/demos/picow/src/picowmenu.rs b/embassy/demos/picow/src/picowmenu.rs
index 1e498cb0395c25c9a4676c2dfb80448ee6430b69..b8afd5a638f5cc7c85944676ccb9d8e41e235a48 100644
--- a/embassy/demos/picow/src/picowmenu.rs
+++ b/embassy/demos/picow/src/picowmenu.rs
@@ -147,7 +147,7 @@ impl MenuCtx {
 
             let conf = self.state.config.lock().await;
             let mut fl = self.state.flash.lock().await;
-            if let Err(_e) = flashconfig::save(&mut fl, &conf) {
+            if let Err(_e) = flashconfig::save(&mut fl, &conf).await {
                 warn!("Error writing flash");
             }
         }
diff --git a/embassy/demos/picow/src/takepipe.rs b/embassy/demos/picow/src/takepipe.rs
index 79c126dbeb0a819280d92f0a35146794cc344b23..259c05a9a59f71dfa352014d42141ee1abf65386 100644
--- a/embassy/demos/picow/src/takepipe.rs
+++ b/embassy/demos/picow/src/takepipe.rs
@@ -16,7 +16,7 @@ use embassy_sync::{pipe, mutex::Mutex, signal::Signal};
 use embassy_sync::pipe::Pipe;
 use embassy_futures::select::{select, Either};
 
-use sunset_embassy::{SunsetMutex, SunsetRawMutex};
+use sunset_embassy::SunsetRawMutex;
 
 pub const READ_SIZE: usize = 4000;
 pub const WRITE_SIZE: usize = 64;
@@ -37,7 +37,6 @@ pub const WRITE_SIZE: usize = 64;
 pub(crate) struct TakePipeStorage {
 	fanout: Pipe<SunsetRawMutex, READ_SIZE>,
     fanin: Pipe<SunsetRawMutex, WRITE_SIZE>,
-    wake: Signal<SunsetRawMutex, ()>,
 }
 
 impl TakePipeStorage {
@@ -45,11 +44,15 @@ impl TakePipeStorage {
         Default::default()
     }
 
-    pub fn pipe(&self) -> TakePipe {
+    pub fn build(&mut self) -> TakePipe {
+        let (fanout_r, fanout_w) = self.fanout.split();
+        let (fanin_r, fanin_w) = self.fanin.split();
         TakePipe {
-            shared_read: Mutex::new((0, self.fanout.reader())),
-            shared_write: Mutex::new((0, self.fanin.writer())),
-            pipe: self,
+            shared_read: Mutex::new((0, fanout_r)),
+            shared_write: Mutex::new((0, fanin_w)),
+            reader: fanin_r,
+            writer: fanout_w,
+            wake: Signal::new(),
         }
     }
 }
@@ -59,21 +62,24 @@ impl Default for TakePipeStorage {
         Self {
             fanout: Pipe::new(),
             fanin: Pipe::new(),
-            wake: Signal::new(),
         }
     }
 }
 
 pub(crate) struct TakePipe<'a> {
+    // fanout
     shared_read: Mutex<SunsetRawMutex, (u64, pipe::Reader<'a, SunsetRawMutex, READ_SIZE>)>,
+    writer: pipe::Writer<'a, SunsetRawMutex, READ_SIZE>,
+    // fanin
+    reader: pipe::Reader<'a, SunsetRawMutex, WRITE_SIZE>,
     shared_write: Mutex<SunsetRawMutex, (u64, pipe::Writer<'a, SunsetRawMutex, WRITE_SIZE>)>,
-    pipe: &'a TakePipeStorage,
+    wake: Signal<SunsetRawMutex, ()>,
 }
 
 impl<'a> TakePipe<'a> {
     pub async fn take(&'a self) -> (TakeRead<'a>, TakeWrite<'a>) {
 
-        self.pipe.wake.signal(());
+        self.wake.signal(());
         let mut lr = self.shared_read.lock().await;
         let (cr, _r) = lr.deref_mut();
         let mut lw = self.shared_write.lock().await;
@@ -85,16 +91,14 @@ impl<'a> TakePipe<'a> {
         // that wouldn't deal with data that has already progressed
         // further along out the SSH channel etc. So we leave that
         // for high levels to deal with if needed.
-        self.pipe.wake.reset();
+        self.wake.reset();
 
         let r = TakeRead {
-            pipe: self.pipe,
-            shared: Some(&self.shared_read),
+            pipe: Some(self),
             counter: *cr,
         };
         let w = TakeWrite {
-            pipe: self.pipe,
-            shared: Some(&self.shared_write),
+            pipe: Some(self),
             counter: *cw,
         };
         (r, w)
@@ -106,33 +110,33 @@ impl<'a> TakePipe<'a> {
 
     pub fn split(&'a self) -> (TakePipeRead<'a>, TakePipeWrite<'a>) {
         let r = TakePipeRead {
-            pipe: self.pipe,
+            pipe: self,
         };
         let w = TakePipeWrite {
-            pipe: self.pipe,
+            pipe: self,
         };
         (r, w)
     }
 }
 
 pub(crate) struct TakePipeRead<'a> {
-    pipe: &'a TakePipeStorage,
+    pipe: &'a TakePipe<'a>,
 }
 
 pub(crate) struct TakePipeWrite<'a> {
-    pipe: &'a TakePipeStorage,
+    pipe: &'a TakePipe<'a>,
 }
 
 impl<'a> Read for TakePipeRead<'a> {
     async fn read(&mut self, buf: &mut [u8]) -> sunset::Result<usize> {
-        let r = self.pipe.fanin.read(buf).await;
+        let r = self.pipe.reader.read(buf).await;
         Ok(r)
     }
 }
 
 impl<'a> Write for TakePipeWrite<'a> {
     async fn write(&mut self, buf: &[u8]) -> sunset::Result<usize> {
-        let r = self.pipe.fanout.write(buf).await;
+        let r = self.pipe.writer.write(buf).await;
         Ok(r)
     }
 }
@@ -146,18 +150,17 @@ impl ErrorType for TakePipeWrite<'_> {
 }
 
 pub(crate) struct TakeRead<'a> {
-    pipe: &'a TakePipeStorage,
-    shared: Option<&'a SunsetMutex<(u64, pipe::Reader<'a, SunsetRawMutex, READ_SIZE>)>>,
+    pipe: Option<&'a TakePipe<'a>>,
     counter: u64,
 }
 
 impl Read for TakeRead<'_> {
 
     async fn read(&mut self, buf: &mut [u8]) -> sunset::Result<usize> {
-        let p = self.shared.ok_or(sunset::Error::ChannelEOF)?;
+        let p = self.pipe.ok_or(sunset::Error::ChannelEOF)?;
 
         let op = async {
-            let mut p = p.lock().await;
+            let mut p = p.shared_read.lock().await;
             let (c, o) = p.deref_mut();
             if *c != self.counter {
                 return Err(sunset::Error::ChannelEOF);
@@ -167,7 +170,7 @@ impl Read for TakeRead<'_> {
 
         let r = select(
             op,
-            self.pipe.wake.wait(),
+            p.wake.wait(),
         );
 
         match r.await {
@@ -175,7 +178,7 @@ impl Read for TakeRead<'_> {
             Either::First(l) => l,
             // lost the pipe
             Either::Second(()) => {
-                self.shared = None;
+                self.pipe = None;
                 Err(sunset::Error::ChannelEOF)
             }
         }
@@ -187,17 +190,16 @@ impl ErrorType for TakeRead<'_> {
 }
 
 pub(crate) struct TakeWrite<'a> {
-    pipe: &'a TakePipeStorage,
-    shared: Option<&'a SunsetMutex<(u64, pipe::Writer<'a, SunsetRawMutex, WRITE_SIZE>)>>,
+    pipe: Option<&'a TakePipe<'a>>,
     counter: u64,
 }
 
 impl Write for TakeWrite<'_> {
     async fn write(&mut self, buf: &[u8]) -> sunset::Result<usize> {
-        let p = self.shared.ok_or(sunset::Error::ChannelEOF)?;
+        let p = self.pipe.ok_or(sunset::Error::ChannelEOF)?;
 
         let op = async {
-            let mut p = p.lock().await;
+            let mut p = p.shared_write.lock().await;
             let (c, o) = p.deref_mut();
             if *c != self.counter {
                 return Err(sunset::Error::ChannelEOF);
@@ -207,7 +209,7 @@ impl Write for TakeWrite<'_> {
 
         let r = select(
             op,
-            self.pipe.wake.wait(),
+            p.wake.wait(),
         );
 
         match r.await {
@@ -215,7 +217,7 @@ impl Write for TakeWrite<'_> {
             Either::First(l) => l,
             // lost the pipe
             Either::Second(_) => {
-                self.shared = None;
+                self.pipe = None;
                 Err(sunset::Error::ChannelEOF)
             }
         }
diff --git a/embassy/demos/picow/src/w5500.rs b/embassy/demos/picow/src/w5500.rs
index b1676ed794c5d93d59c44f2796cf2bef01e6eec0..cf61fb555ca0c92c84c9a4eceecf1553f3e7b4b6 100644
--- a/embassy/demos/picow/src/w5500.rs
+++ b/embassy/demos/picow/src/w5500.rs
@@ -16,9 +16,9 @@ use embassy_rp::gpio::{Input, Level, Output, Pull};
 use embassy_rp::peripherals::*;
 use embassy_rp::spi::{Async, Config as SpiConfig, Spi};
 use embassy_time::Delay;
-use embedded_hal_async::spi::ExclusiveDevice;
+use embedded_hal_bus::spi::ExclusiveDevice;
 
-use embassy_net_w5500::*;
+use embassy_net_wiznet::*;
 
 use static_cell::make_static;
 
@@ -31,6 +31,7 @@ use crate::{SSHConfig, SunsetMutex};
 async fn ethernet_task(
     runner: Runner<
         'static,
+        embassy_net_wiznet::chip::W5500,
         ExclusiveDevice<Spi<'static, SPI0, Async>, Output<'static, PIN_17>, Delay>,
         Input<'static, PIN_21>,
         Output<'static, PIN_20>,
@@ -51,7 +52,7 @@ pub(crate) async fn w5500_stack(
     dma1: DMA_CH1,
     spi0: SPI0,
     config: &'static SunsetMutex<SSHConfig>,
-) -> &'static embassy_net::Stack<embassy_net_w5500::Device<'static>> {
+) -> &'static embassy_net::Stack<embassy_net_wiznet::Device<'static>> {
     let mut spi_cfg = SpiConfig::default();
     spi_cfg.frequency = 50_000_000;
     let (miso, mosi, clk) = (p16, p19, p18);
@@ -63,7 +64,7 @@ pub(crate) async fn w5500_stack(
     let mac_addr = config.lock().await.mac;
     // 
     let state = make_static!(State::<8, 8>::new());
-    let (device, runner) = embassy_net_w5500::new(
+    let (device, runner) = embassy_net_wiznet::new(
         mac_addr,
         state,
         ExclusiveDevice::new(spi, cs, Delay),
diff --git a/embassy/demos/std/Cargo.toml b/embassy/demos/std/Cargo.toml
index 797640c76fd6b30c46b9419cc7c97c56a94e856e..06396b13d3dd263d5f9e8c0a835fd59a6fd3732f 100644
--- a/embassy/demos/std/Cargo.toml
+++ b/embassy/demos/std/Cargo.toml
@@ -7,9 +7,9 @@ edition = "2021"
 embassy-executor = { version = "0.1.0",  default-features=false, features = ["log", "std", "nightly", "integrated-timers"] }
 embassy-time = { version = "0.1",  default-features=false, features = ["log", "std"] }
 # embassy-net/nightly is required for asynch::Read/Write on TcpReader/TcpWriter
-embassy-net = { version = "0.1.0", features = ["tcp", "dhcpv4", "medium-ethernet", "nightly"] }
+embassy-net = { version = "0.2.0", features = ["tcp", "dhcpv4", "medium-ethernet", "nightly"] }
 embassy-net-tuntap = { version = "0.1.0" }
-embassy-sync = { version = "0.2.0" }
+embassy-sync = { version = "0.3.0" }
 embassy-futures = { version = "0.1.0" }
 atomic-polyfill = "0.1.5"
 static_cell = "1.0"
@@ -17,7 +17,7 @@ static_cell = "1.0"
 log = { version = "0.4" }
 env_logger = "0.9.0"
 
-embedded-io-async = "0.5"
+embedded-io-async = "0.6"
 heapless = "0.7.15"
 
 # for tuntap
diff --git a/embassy/demos/std/rust-toolchain.toml b/embassy/demos/std/rust-toolchain.toml
index 2b9134d8f1c40bd048185d814631b95521891ec7..ea5b5eaeb6c744099b95aa574985d98d5d67ebee 100644
--- a/embassy/demos/std/rust-toolchain.toml
+++ b/embassy/demos/std/rust-toolchain.toml
@@ -1,3 +1,3 @@
 [toolchain]
-channel = "nightly-2023-06-14"
+channel = "nightly-2023-10-02"
 components = [ "rustfmt" ]
diff --git a/embassy/rust-toolchain.toml b/embassy/rust-toolchain.toml
index 2b9134d8f1c40bd048185d814631b95521891ec7..ea5b5eaeb6c744099b95aa574985d98d5d67ebee 100644
--- a/embassy/rust-toolchain.toml
+++ b/embassy/rust-toolchain.toml
@@ -1,3 +1,3 @@
 [toolchain]
-channel = "nightly-2023-06-14"
+channel = "nightly-2023-10-02"
 components = [ "rustfmt" ]
diff --git a/rust-toolchain.toml b/rust-toolchain.toml
index 2b9134d8f1c40bd048185d814631b95521891ec7..ea5b5eaeb6c744099b95aa574985d98d5d67ebee 100644
--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,3 +1,3 @@
 [toolchain]
-channel = "nightly-2023-06-14"
+channel = "nightly-2023-10-02"
 components = [ "rustfmt" ]
diff --git a/src/behaviour.rs b/src/behaviour.rs
index 7d1c5dbe6ccd76610e46c28c72c4dce7ba311a23..d223dc1d6655eeaabea19e56b94b9ccde6a979dc 100644
--- a/src/behaviour.rs
+++ b/src/behaviour.rs
@@ -234,7 +234,7 @@ pub trait ServBehaviour {
     // TODO: change password
     /// Implementations should perform password hash comparisons
     /// in constant time, using
-    /// [`subtle::ConstantTimeEq`](subtle::ConstantTimeEq) or similar.
+    /// [`subtle::ConstantTimeEq`] or similar.
     ///
     /// Implementations may need to take care to avoid leaking user existence
     /// based on timing.
diff --git a/src/error.rs b/src/error.rs
index 87282c2624e44090faf099d79f4e947a2610fb3b..de25bf5eec980ca2f1ba4982a1d29b2eb88b283e 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -204,16 +204,6 @@ impl embedded_io::Error for Error {
     }
 }
 
-#[cfg(feature = "embedded-io")]
-impl From<embedded_io::WriteAllError<Error>> for Error {
-    fn from(e: embedded_io::WriteAllError<Error>) -> Error {
-        match e {
-            embedded_io::WriteAllError::WriteZero => ChannelEOF.build(),
-            embedded_io::WriteAllError::Other(e) => e,
-        }
-    }
-}
-
 pub type Result<T, E = Error> = core::result::Result<T, E>;
 
 pub trait TrapBug<T> {
diff --git a/src/lib.rs b/src/lib.rs
index d01393d31bd315893c0991f7fad0ad848ee22546..c484b8a8ac4d6da9db1a545bf093d2b88cf4805a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -6,6 +6,10 @@
 // avoids headscratching
 #![deny(unused_must_use)]
 
+// for the time being silence the lint. need to figure if we actually
+// want to work with Send (not needed for embassy)
+#![allow(async_fn_in_trait)]
+
 // XXX unused_imports only during dev churn
 #![allow(unused_imports)]