diff --git a/Cargo.lock b/Cargo.lock
index 9dffd5c5f4aa1b29805d86ce32acf58d8f64423a..511985cf2710449d9da23585f6ec1d8e192aab4a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -246,8 +246,9 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
 
 [[package]]
 name = "bcrypt"
-version = "0.14.0"
-source = "git+https://github.com/mkj/rust-bcrypt?branch=noalloc#2ee6bc724ffd76bf9d221b0da5487d6cc304002f"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d1c9c15093eb224f0baa400f38fcd713fc1391a6f1c389d886beef146d60a3"
 dependencies = [
  "base64",
  "blowfish",
diff --git a/Cargo.toml b/Cargo.toml
index 6bd18c94f9871915e8f9ed8bf72d6d27ffc1a80d..fd51855bdb799b50aad3cee07ce9bc77bac45bd4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -101,8 +101,6 @@ cyw43 = { git = "https://github.com/embassy-rs/embassy/", rev = "2eb7a67c7027c67
 cyw43-pio = { git = "https://github.com/embassy-rs/embassy/", rev = "2eb7a67c7027c6768fa95031caf60bcd0eade1ad" }
 embassy-net-w5500 = { git = "https://github.com/embassy-rs/embassy/", rev = "2eb7a67c7027c6768fa95031caf60bcd0eade1ad" }
 
-bcrypt = { version = "0.14", git = "https://github.com/mkj/rust-bcrypt", branch = "noalloc" }
-
 # these are mostly applicable to picow, but can't hurt generally
 [profile.dev]
 debug = 2
diff --git a/embassy/demos/common/Cargo.toml b/embassy/demos/common/Cargo.toml
index dc85853b6ffd27443bec158125b3114929a967fb..393d345e1abd5bff4393eaad281bfc8ebad95cfd 100644
--- a/embassy/demos/common/Cargo.toml
+++ b/embassy/demos/common/Cargo.toml
@@ -21,7 +21,7 @@ heapless = "0.7.15"
 embedded-io = { version = "0.4", features = ["async"] }
 sha2 = { version = "0.10", default-features = false }
 hmac = { version = "0.12", default-features = false }
-bcrypt = { version = "0.14", default-features = false }
+bcrypt = { version = "0.15", default-features = false }
 ed25519-dalek = { version = "2.0.0-rc.2", default-features = false }
 
 defmt = { version = "0.3", optional = true }
diff --git a/embassy/demos/common/src/config.rs b/embassy/demos/common/src/config.rs
index 829b4882e9ddbf448354a32e2478708fd2200488..9d0bac1a41c6e0bdb63b8b18b4c54acd75c4a0ec 100644
--- a/embassy/demos/common/src/config.rs
+++ b/embassy/demos/common/src/config.rs
@@ -179,6 +179,11 @@ where
         let ad: [u8; 4] = SSHDecode::dec(s)?;
         let ad = Ipv4Address::from_bytes(&ad);
         let prefix = SSHDecode::dec(s)?;
+        if prefix > 32 {
+            // emabassy panics, so test it here
+            debug!("Prefix {} > 32", prefix);
+            return Err(WireError::PacketWrong)
+        }
         let gw: Option<[u8; 4]> = dec_option(s)?;
         let gateway = gw.map(|gw| Ipv4Address::from_bytes(&gw));
         Ok(StaticConfigV4 {
@@ -365,8 +370,8 @@ mod tests {
             ),
             mac: [6, 2, 3, 4, 5, 6],
             ip4_static: Some(embassy_net::StaticConfigV4 {
-                address: embassy_net::Ipv4Cidr::new(embassy_net::Ipv4Address::UNSPECIFIED, 8),
-                gateway: Some(embassy_net::Ipv4Address::UNSPECIFIED),
+                address: embassy_net::Ipv4Cidr::new(embassy_net::Ipv4Address([44,33,22,11]), 8),
+                gateway: Some(embassy_net::Ipv4Address([1,2,3,4])),
                 // no dns servers. may need changing later?
                 dns_servers: heapless::Vec::new(),
             }),
diff --git a/embassy/demos/std/src/main.rs b/embassy/demos/std/src/main.rs
index 0f23d3b820f21c2b066291c6b8493d7cc3fcde38..0e24d3d50e809d934ac8f5dfac74ce9af4e4d2af 100644
--- a/embassy/demos/std/src/main.rs
+++ b/embassy/demos/std/src/main.rs
@@ -44,7 +44,18 @@ async fn net_task(stack: &'static Stack<TunTapDevice>) -> ! {
 async fn main_task(spawner: Spawner) {
     // TODO config
     let opt_tap0 = "tap0";
-    let net_config = Config::dhcpv4(Default::default());
+
+    let config = &*singleton!(  {
+        let mut config = SSHConfig::new().unwrap();
+        // config.set_console_pw(Some("pw")).unwrap();
+        SunsetMutex::new(config)
+    } );
+
+    let net_config = if let Some(ref s) = config.lock().await.ip4_static {
+        embassy_net::Config::ipv4_static(s.clone())
+    } else {
+        embassy_net::Config::dhcpv4(Default::default())
+    };
 
     // Init network device
     let device = TunTapDevice::new(opt_tap0).unwrap();
@@ -62,12 +73,6 @@ async fn main_task(spawner: Spawner) {
     // Launch network task
     spawner.spawn(net_task(stack)).unwrap();
 
-    let config = &*singleton!(  {
-        let mut config = SSHConfig::new().unwrap();
-        // config.set_console_pw(Some("pw")).unwrap();
-        SunsetMutex::new(config)
-    } );
-
     for _ in 0..NUM_LISTENERS {
         spawner.spawn(listener(stack, config)).unwrap();
     }