diff --git a/Cargo.toml b/Cargo.toml
index a5c48ae379901f3c35132abb45b6e75b683cf7c7..479d279f2f75aed9a07594c840ede2b0e283101b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -82,8 +82,8 @@ serde_json = "1.0"
 
 # embassy is not released yet
 [patch.crates-io]
-embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
+embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
 # embassy-sync = { path = "/home/matt/3rd/rs/embassy/embassy-sync" }
diff --git a/LICENSE b/LICENSE
index 48cde60111dbe29abb9105788881ff15b16a60d8..e677608e235fb10374a8cbbb8109bf2f310941db 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,15 @@
 Sunset SSH is (c) 2022 Matt Johnston and contributors
 Provided under terms of the MPL 2.0 as below.
 
+Some demo code is from Embassy project under
+MIT or Apache-2.0 license.
+
+embassy/demos/picow/src/wifi.rs
+embassy/demos/picow/src/tuntap.rs
+
+picow firmware has Permissive Binary License
+embassy/demos/picow/firmware/LICENSE-permissive-binary-license-1.0.txt
+
 
 Mozilla Public License Version 2.0
 ==================================
diff --git a/embassy/demos/picow/Cargo.lock b/embassy/demos/picow/Cargo.lock
index 82d90c5b6348e0b41a896fe5d016161b5305811a..d87523b0a7694280e5bf99b908f693a3f6346aa9 100644
--- a/embassy/demos/picow/Cargo.lock
+++ b/embassy/demos/picow/Cargo.lock
@@ -253,7 +253,7 @@ dependencies = [
  "embassy-sync",
  "embassy-time",
  "embedded-hal 1.0.0-alpha.9",
- "embedded-hal-async 0.2.0-alpha.0",
+ "embedded-hal-async",
  "futures",
  "num_enum",
 ]
@@ -361,7 +361,7 @@ dependencies = [
 [[package]]
 name = "embassy-cortex-m"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "atomic-polyfill 1.0.1",
  "cfg-if",
@@ -376,12 +376,12 @@ dependencies = [
 [[package]]
 name = "embassy-embedded-hal"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "embassy-sync",
  "embedded-hal 0.2.7",
  "embedded-hal 1.0.0-alpha.9",
- "embedded-hal-async 0.1.0-alpha.3",
+ "embedded-hal-async",
  "embedded-storage",
  "embedded-storage-async",
  "nb 1.0.0",
@@ -389,8 +389,8 @@ dependencies = [
 
 [[package]]
 name = "embassy-executor"
-version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+version = "0.1.1"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "atomic-polyfill 1.0.1",
  "cfg-if",
@@ -405,20 +405,21 @@ dependencies = [
 [[package]]
 name = "embassy-futures"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 
 [[package]]
 name = "embassy-hal-common"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
+ "defmt",
  "num-traits",
 ]
 
 [[package]]
 name = "embassy-macros"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "darling",
  "proc-macro2",
@@ -429,7 +430,7 @@ dependencies = [
 [[package]]
 name = "embassy-net"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "as-slice 0.2.1",
  "atomic-polyfill 1.0.1",
@@ -448,7 +449,7 @@ dependencies = [
 [[package]]
 name = "embassy-rp"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "atomic-polyfill 1.0.1",
  "cfg-if",
@@ -466,24 +467,25 @@ dependencies = [
  "embassy-usb-driver",
  "embedded-hal 0.2.7",
  "embedded-hal 1.0.0-alpha.9",
- "embedded-hal-async 0.1.0-alpha.3",
+ "embedded-hal-async",
  "embedded-hal-nb",
- "embedded-io",
+ "embedded-io 0.4.0",
  "embedded-storage",
  "futures",
  "nb 1.0.0",
+ "rand_core",
  "rp2040-pac2",
 ]
 
 [[package]]
 name = "embassy-sync"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "atomic-polyfill 1.0.1",
  "cfg-if",
  "critical-section 1.1.1",
- "embedded-io",
+ "embedded-io 0.4.0",
  "futures-util",
  "heapless",
 ]
@@ -491,7 +493,7 @@ dependencies = [
 [[package]]
 name = "embassy-time"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "atomic-polyfill 1.0.1",
  "cfg-if",
@@ -506,7 +508,7 @@ dependencies = [
 [[package]]
 name = "embassy-usb-driver"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "defmt",
 ]
@@ -527,15 +529,6 @@ version = "1.0.0-alpha.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "129b101ddfee640565f7c07b301a31d95aa21e5acef21a491c307139f5fa4c91"
 
-[[package]]
-name = "embedded-hal-async"
-version = "0.1.0-alpha.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c913f631bd08c253b85fdf0077061c64763d70e27803b04da5a49c5fb2a65057"
-dependencies = [
- "embedded-hal 1.0.0-alpha.9",
-]
-
 [[package]]
 name = "embedded-hal-async"
 version = "0.2.0-alpha.0"
@@ -564,6 +557,12 @@ dependencies = [
  "defmt",
 ]
 
+[[package]]
+name = "embedded-io"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
+
 [[package]]
 name = "embedded-storage"
 version = "0.3.0"
@@ -1160,8 +1159,8 @@ dependencies = [
  "embassy-sync",
  "embassy-time",
  "embedded-hal 1.0.0-alpha.9",
- "embedded-hal-async 0.1.0-alpha.3",
- "embedded-io",
+ "embedded-hal-async",
+ "embedded-io 0.3.1",
  "futures",
  "getrandom",
  "heapless",
diff --git a/embassy/demos/picow/Cargo.toml b/embassy/demos/picow/Cargo.toml
index e8a71bb67e1de26d49492b1831486ca019b5f6f0..687bb518ea8350f2f8068f77679d437a75a41b14 100644
--- a/embassy/demos/picow/Cargo.toml
+++ b/embassy/demos/picow/Cargo.toml
@@ -27,7 +27,7 @@ cortex-m-rt = "0.7.0"
 futures = { version = "0.3.17", default-features = false, features = ["async-await", "cfg-target-has-atomic", "unstable"] }
 
 embedded-hal-1 = { package = "embedded-hal", version = "1.0.0-alpha.8" }
-embedded-hal-async = { version = "0.1.0-alpha.2" }
+embedded-hal-async = { version = "0.2.0-alpha.0" }
 embedded-io = { version = "0.3.0", features = ["async", "defmt"] }
 heapless = "0.7.15"
 
@@ -49,12 +49,12 @@ default = ["defmt"]
 defmt = []
 
 [patch.crates-io]
-embassy-executor = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-rp = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
+embassy-executor = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-rp = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
 # embassy-sync = { path = "/home/matt/3rd/rs/embassy/embassy-sync" }
 
 [profile.dev]
diff --git a/embassy/demos/picow/src/main.rs b/embassy/demos/picow/src/main.rs
index e109c355a35f2ccf6c2956ae11e68ae6562a2db7..8db7777f1c8161d271b1bbf7efd585b97387e5a1 100644
--- a/embassy/demos/picow/src/main.rs
+++ b/embassy/demos/picow/src/main.rs
@@ -1,6 +1,8 @@
 #![no_std]
 #![no_main]
 #![feature(type_alias_impl_trait)]
+#![feature(async_fn_in_trait)]
+#![allow(incomplete_features)]
 
 use defmt::*;
 use embassy_executor::Spawner;
@@ -35,7 +37,7 @@ async fn main(spawner: Spawner) {
     let mut p = embassy_rp::init(Default::default());
 
     caprand::setup(&mut p.PIN_25).unwrap();
-    getrandom::register_custom_getrandom!(caprand::random);
+    getrandom::register_custom_getrandom!(caprand::getrandom);
 
     // TODO: move this to wifi mod
 
diff --git a/embassy/demos/picow/src/wifi.rs b/embassy/demos/picow/src/wifi.rs
index 393f2798374f2b1e252cb61f6669e1f1b1ad3250..01a87feed3659b5ea8f68f7623eb23e655008851 100644
--- a/embassy/demos/picow/src/wifi.rs
+++ b/embassy/demos/picow/src/wifi.rs
@@ -1,9 +1,14 @@
+// Modified from https://github.com/embassy-rs/cyw43/
+// Copyright (c) 2019-2022 Embassy project contributors
+// MIT or Apache-2.0 license
+
+use core::convert::Infallible;
+
 use embassy_rp::gpio::{Flex, Output};
 use embassy_rp::peripherals::{PIN_23, PIN_24, PIN_25, PIN_29};
-use embedded_hal_async::spi::{ExclusiveDevice, SpiBusFlush, SpiBusRead, SpiBusWrite};
 use embedded_hal_1::spi::ErrorType;
-use core::convert::Infallible;
-use core::future::Future;
+use embedded_hal_async::spi::{ExclusiveDevice, SpiBusFlush, SpiBusRead, SpiBusWrite};
+use embedded_io::asynch::Write;
 
 #[embassy_executor::task]
 pub(crate) async fn wifi_task(
@@ -29,70 +34,58 @@ impl ErrorType for MySpi {
 }
 
 impl SpiBusFlush for MySpi {
-    type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>>
-    where
-        Self: 'a;
-
-    fn flush<'a>(&'a mut self) -> Self::FlushFuture<'a> {
-        async move { Ok(()) }
+    async fn flush(&mut self) -> Result<(), Self::Error> {
+        Ok(())
     }
 }
 
 impl SpiBusRead<u32> for MySpi {
-    type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a;
-
-    fn read<'a>(&'a mut self, words: &'a mut [u32]) -> Self::ReadFuture<'a> {
-        async move {
-            self.dio.set_as_input();
-            for word in words {
-                let mut w = 0;
-                for _ in 0..32 {
-                    w = w << 1;
-
-                    // rising edge, sample data
-                    if self.dio.is_high() {
-                        w |= 0x01;
-                    }
-                    self.clk.set_high();
-
-                    // falling edge
-                    self.clk.set_low();
+    async fn read(&mut self, words: &mut [u32]) -> Result<(), Self::Error> {
+        self.dio.set_as_input();
+        for word in words {
+            let mut w = 0;
+            for _ in 0..32 {
+                w = w << 1;
+
+                // rising edge, sample data
+                if self.dio.is_high() {
+                    w |= 0x01;
                 }
-                *word = w
-            }
+                self.clk.set_high();
 
-            Ok(())
+                // falling edge
+                self.clk.set_low();
+            }
+            *word = w
         }
+
+        Ok(())
     }
 }
 
 impl SpiBusWrite<u32> for MySpi {
-    type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a;
-
-    fn write<'a>(&'a mut self, words: &'a [u32]) -> Self::WriteFuture<'a> {
-        async move {
-            self.dio.set_as_output();
-            for word in words {
-                let mut word = *word;
-                for _ in 0..32 {
-                    // falling edge, setup data
-                    self.clk.set_low();
-                    if word & 0x8000_0000 == 0 {
-                        self.dio.set_low();
-                    } else {
-                        self.dio.set_high();
-                    }
+    async fn write(&mut self, words: &[u32]) -> Result<(), Self::Error> {
+        self.dio.set_as_output();
+        for word in words {
+            let mut word = *word;
+            for _ in 0..32 {
+                // falling edge, setup data
+                self.clk.set_low();
+                if word & 0x8000_0000 == 0 {
+                    self.dio.set_low();
+                } else {
+                    self.dio.set_high();
+                }
 
-                    // rising edge
-                    self.clk.set_high();
+                // rising edge
+                self.clk.set_high();
 
-                    word = word << 1;
-                }
+                word = word << 1;
             }
-            self.clk.set_low();
-
-            self.dio.set_as_input();
-            Ok(())
         }
+        self.clk.set_low();
+
+        self.dio.set_as_input();
+        Ok(())
     }
 }
diff --git a/embassy/demos/std/Cargo.lock b/embassy/demos/std/Cargo.lock
index c21300f22a57fcc2a98b9083b9c8da1df756ae63..9945ed36a6535e31f9ddddcb735659f208a03a69 100644
--- a/embassy/demos/std/Cargo.lock
+++ b/embassy/demos/std/Cargo.lock
@@ -326,8 +326,8 @@ dependencies = [
 
 [[package]]
 name = "embassy-executor"
-version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+version = "0.1.1"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "atomic-polyfill 1.0.1",
  "cfg-if",
@@ -342,12 +342,12 @@ dependencies = [
 [[package]]
 name = "embassy-futures"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 
 [[package]]
 name = "embassy-macros"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "darling",
  "proc-macro2",
@@ -358,7 +358,7 @@ dependencies = [
 [[package]]
 name = "embassy-net"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "as-slice 0.2.1",
  "atomic-polyfill 1.0.1",
@@ -377,12 +377,12 @@ dependencies = [
 [[package]]
 name = "embassy-sync"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "atomic-polyfill 1.0.1",
  "cfg-if",
  "critical-section",
- "embedded-io",
+ "embedded-io 0.4.0",
  "futures-util",
  "heapless",
 ]
@@ -390,7 +390,7 @@ dependencies = [
 [[package]]
 name = "embassy-time"
 version = "0.1.0"
-source = "git+https://github.com/embassy-rs/embassy?rev=61be0e75c83961a42fc1d844159f1fed7d8afbea#61be0e75c83961a42fc1d844159f1fed7d8afbea"
+source = "git+https://github.com/embassy-rs/embassy?rev=f109e73c6d7ef2ad93102b7c8223f5cef30ef36f#f109e73c6d7ef2ad93102b7c8223f5cef30ef36f"
 dependencies = [
  "atomic-polyfill 1.0.1",
  "cfg-if",
@@ -436,6 +436,12 @@ dependencies = [
  "defmt",
 ]
 
+[[package]]
+name = "embedded-io"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
+
 [[package]]
 name = "env_logger"
 version = "0.9.3"
@@ -1052,7 +1058,7 @@ dependencies = [
  "embassy-time",
  "embedded-hal 1.0.0-alpha.9",
  "embedded-hal-async",
- "embedded-io",
+ "embedded-io 0.3.1",
  "env_logger",
  "futures",
  "heapless",
diff --git a/embassy/demos/std/Cargo.toml b/embassy/demos/std/Cargo.toml
index a19a06cdba7463ce882393ca0b3cd6f07b37305f..90256ed0ffb6cf53ffbec20c61964039271a8492 100644
--- a/embassy/demos/std/Cargo.toml
+++ b/embassy/demos/std/Cargo.toml
@@ -38,11 +38,11 @@ rand = { version = "0.8", default-features = false, features = ["getrandom"] }
 sha2 = { version = "0.10", default-features = false }
 
 [patch.crates-io]
-embassy-executor = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
-embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "61be0e75c83961a42fc1d844159f1fed7d8afbea" }
+embassy-executor = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-time = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-futures = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-sync = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
+embassy-net = { git = "https://github.com/embassy-rs/embassy", rev = "f109e73c6d7ef2ad93102b7c8223f5cef30ef36f" }
 # embassy-sync = { path = "/home/matt/3rd/rs/embassy/embassy-sync" }
 
 [profile.dev]
diff --git a/embassy/demos/std/src/tuntap.rs b/embassy/demos/std/src/tuntap.rs
index a0cace7f7700e523198f665ba79a9fb66c424018..6abc524f5b77163297b5e34770acef1219c64935 100644
--- a/embassy/demos/std/src/tuntap.rs
+++ b/embassy/demos/std/src/tuntap.rs
@@ -1,3 +1,7 @@
+// From https://github.com/embassy-rs/embassy/blob/master/examples/std/src/tuntap.rs
+// Copyright (c) 2019-2022 Embassy project contributors
+// MIT or Apache-2.0 license
+
 use std::io;
 use std::io::{Read, Write};
 use std::os::unix::io::{AsRawFd, RawFd};