diff --git a/Cargo.lock b/Cargo.lock
index 339bd57f1dace448212aae4175c943e70ce27ba6..5f71d30d523e4b5d5267330b869a27fa1b14f423 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -8,7 +8,7 @@ version = "0.1.0"
 dependencies = [
  "byte-slice-cast 1.2.2",
  "embedded-hal 0.2.7",
- "embedded-hal 1.0.0-alpha.10",
+ "embedded-hal 1.0.0-alpha.11",
  "heapless",
 ]
 
@@ -116,6 +116,12 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "bitfield"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d7e60934ceec538daadb9d8432424ed043a904d8e0243f3c6446bce549a46ac"
+
 [[package]]
 name = "bitflags"
 version = "1.3.2"
@@ -175,15 +181,15 @@ dependencies = [
  "anyhow",
  "enum-as-inner",
  "regex",
- "strum",
- "strum_macros",
+ "strum 0.24.1",
+ "strum_macros 0.24.3",
 ]
 
 [[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 = "darling"
@@ -343,7 +349,7 @@ dependencies = [
  "embassy-sync",
  "embassy-time",
  "embedded-hal 0.2.7",
- "embedded-hal 1.0.0-alpha.10",
+ "embedded-hal 1.0.0-alpha.11",
  "embedded-hal-async",
  "esp-println",
  "esp32s3-hal",
@@ -383,15 +389,15 @@ dependencies = [
 
 [[package]]
 name = "embassy-time"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd403e218939bba4a1fe4b58c6f81bf0818852bdd824147f95e6dc4ff4166ac4"
+checksum = "7a0461fa8de2cf03c4363a38f439a5d7e4cc16cd41947b51663ff4b2f155b902"
 dependencies = [
  "atomic-polyfill 1.0.3",
  "cfg-if",
  "critical-section",
  "embedded-hal 0.2.7",
- "embedded-hal 1.0.0-alpha.10",
+ "embedded-hal 1.0.0-alpha.11",
  "embedded-hal-async",
  "futures-util",
  "heapless",
@@ -460,36 +466,36 @@ dependencies = [
 
 [[package]]
 name = "embedded-hal"
-version = "1.0.0-alpha.10"
+version = "1.0.0-alpha.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f65c4d073f5d91c66e629b216818a4c9747eeda0debedf2deda9a0a947e4e93b"
+checksum = "f7724ebabcadfeb15920571dd727bc8ccde8586e52f2890bdb8182fdf42c3ff2"
 
 [[package]]
 name = "embedded-hal-async"
-version = "0.2.0-alpha.1"
+version = "0.2.0-alpha.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8042370aa7af48de36d5312cda14c18ed8ca6b7ce64f5a07832fedc9dc83063f"
+checksum = "918285ec7b18edb024d4adc64f6f16cdc7c4d72eadfc85c3313d1e0ff40e0229"
 dependencies = [
- "embedded-hal 1.0.0-alpha.10",
+ "embedded-hal 1.0.0-alpha.11",
 ]
 
 [[package]]
 name = "embedded-hal-bus"
-version = "0.1.0-alpha.2"
+version = "0.1.0-alpha.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ee7698943844cafc89032a6bfc01795b4c6f25b8f248e91a58a4bf873047872"
+checksum = "0b36407d17c7b9de899bf9ff24d497d7bb02e52f2385045632f5e6b50187e954"
 dependencies = [
  "critical-section",
- "embedded-hal 1.0.0-alpha.10",
+ "embedded-hal 1.0.0-alpha.11",
 ]
 
 [[package]]
 name = "embedded-hal-nb"
-version = "1.0.0-alpha.2"
+version = "1.0.0-alpha.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1465fffd56a95bbc105c17965bca1c1d5815027b1cc6bb183bc05d04563d065c"
+checksum = "a09e4c3f8a54e60803405e1cc17e36c963ab32e654f8d6bb49d48cd8116360d7"
 dependencies = [
- "embedded-hal 1.0.0-alpha.10",
+ "embedded-hal 1.0.0-alpha.11",
  "nb 1.1.0",
 ]
 
@@ -551,11 +557,12 @@ dependencies = [
 
 [[package]]
 name = "esp-hal-common"
-version = "0.10.0"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05d4498ddbbbf9a21e64f9269d2b4dd4059c34863ff54c702fb99e435f967767"
+checksum = "b9bb3220d63ba0ec4e9b1846edd47e8da3a884c6557b3ba7398494c56a93de35"
 dependencies = [
  "basic-toml",
+ "bitfield",
  "bitflags 2.3.3",
  "cfg-if",
  "critical-section",
@@ -565,7 +572,7 @@ dependencies = [
  "embedded-can",
  "embedded-dma",
  "embedded-hal 0.2.7",
- "embedded-hal 1.0.0-alpha.10",
+ "embedded-hal 1.0.0-alpha.11",
  "embedded-hal-async",
  "embedded-hal-nb",
  "esp-hal-procmacros",
@@ -577,7 +584,7 @@ dependencies = [
  "nb 1.1.0",
  "paste",
  "serde",
- "strum",
+ "strum 0.25.0",
  "usb-device",
  "void",
  "xtensa-lx",
@@ -600,9 +607,9 @@ dependencies = [
 
 [[package]]
 name = "esp-hal-smartled"
-version = "0.3.0"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d01cd77e59c2e6d4a0529674596a679f4cfa1779ce82063a3adb2bfeb0c57d8"
+checksum = "bd1c4e28c17b0b6f7aac56a5e27c71b5e5ece3e81b49fbcfa81be2ccb9cc2f82"
 dependencies = [
  "esp-hal-common",
  "fugit",
@@ -632,9 +639,9 @@ dependencies = [
 
 [[package]]
 name = "esp32s3"
-version = "0.19.0"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f05672306ffd2f39665c7eaf4615fc1d26f4cebfd0ad51828f81e53377fec5c"
+checksum = "93e482df6923df18ccd05ab80b54be5af32497f112f5b60ee05dc9d57562e68c"
 dependencies = [
  "critical-section",
  "vcell",
@@ -643,9 +650,9 @@ dependencies = [
 
 [[package]]
 name = "esp32s3-hal"
-version = "0.10.0"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f9e7627629fb361e71e95a9b57d99b213fe58fc4f3bcfaf0cd9fb395f4444b6"
+checksum = "7cd8d75d35f3286a1e1126758527b0d8ef1d98f6a137b77fed066800f74bc9c9"
 dependencies = [
  "bare-metal",
  "embassy-time",
@@ -687,7 +694,7 @@ dependencies = [
  "embedded-graphics",
  "embedded-graphics-framebuf",
  "embedded-hal 0.2.7",
- "embedded-hal 1.0.0-alpha.10",
+ "embedded-hal 1.0.0-alpha.11",
  "embedded-hal-async",
  "embedded-hal-bus",
  "esp-backtrace",
@@ -1131,18 +1138,18 @@ checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
 
 [[package]]
 name = "serde"
-version = "1.0.181"
+version = "1.0.183"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d3e73c93c3240c0bda063c239298e633114c69a888c3e37ca8bb33f343e9890"
+checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.181"
+version = "1.0.183"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be02f6cb0cd3a5ec20bbcfbcbd749f57daddb1a0882dc2e46a6c236c90b977ed"
+checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1233,8 +1240,14 @@ name = "strum"
 version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f"
+
+[[package]]
+name = "strum"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
 dependencies = [
- "strum_macros",
+ "strum_macros 0.25.2",
 ]
 
 [[package]]
@@ -1250,6 +1263,19 @@ dependencies = [
  "syn 1.0.109",
 ]
 
+[[package]]
+name = "strum_macros"
+version = "0.25.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 2.0.28",
+]
+
 [[package]]
 name = "syn"
 version = "1.0.109"
diff --git a/Cargo.toml b/Cargo.toml
index 72876148168092e3eaca959dcee778889bbc2dc8..7012879e956bd60a02f32b4fae1169913c2ac42f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -15,19 +15,19 @@ embassy-futures = "0.1.0"
 embassy-net = { version = "0.1.0", features = ["medium-ethernet", "udp", "proto-ipv6", "nightly", "unstable-traits"] }
 embassy-net-badgelink = { path = "./embassy-net-badgelink" }
 embassy-sync = "0.2.0"
-embassy-time = { version = "=0.1.1", features = ["nightly", "unstable-traits"] }
+embassy-time = { version = "=0.1.2", features = ["nightly", "unstable-traits"] }
 embedded-dma = "0.2.0"
 embedded-graphics = "0.8.0"
 embedded-graphics-framebuf = "0.5.0"
 embedded-hal = "0.2.7"
-embedded-hal-1 = { package = "embedded-hal", version = "=1.0.0-alpha.10" }
+embedded-hal-1 = { package = "embedded-hal", version = "=1.0.0-alpha.11" }
 embedded-hal-async = "0.2.0-alpha.1"
 embedded-hal-bus = "0.1.0-alpha.2"
 esp-backtrace = { version = "0.7.0", features = ["esp32s3", "panic-handler", "exception-handler", "print-uart"] }
-esp-hal-smartled = { version = "0.3.0", features = ["esp32s3"] }
+esp-hal-smartled = { version = "0.4.0", features = ["esp32s3"] }
 esp-println = { version = "0.5.0", features = ["esp32s3"] }
 gc9a01 = { path = "./gc9a01" }
-hal = { package = "esp32s3-hal", version = "0.10.0", features = ["embassy", "async", "embassy-time", "embassy-time-systick"] }
+hal = { package = "esp32s3-hal", version = "0.11.0", features = ["embassy", "async", "embassy-time", "embassy-time-systick"] }
 heapless = "0.7.16"
 port-expander = "0.4.0"
 shared-bus = { version = "0.3.0", features = ["xtensa"] }
diff --git a/ad7147/Cargo.toml b/ad7147/Cargo.toml
index 29bbf6e2e5cb676b5ce9dc78d82d990a25e60455..f0b001c42765ca11b63255b9dea2b4fd4c3559d1 100644
--- a/ad7147/Cargo.toml
+++ b/ad7147/Cargo.toml
@@ -8,6 +8,6 @@ authors = ["zdmx <hi@zdmx.me>"]
 
 [dependencies]
 byte-slice-cast = { version = "1.2.2", default-features = false }
-embedded-hal-1 = { package = "embedded-hal", version = "=1.0.0-alpha.10" }
+embedded-hal-1 = { package = "embedded-hal", version = "=1.0.0-alpha.11" }
 embedded-hal = "0.2.7"
 heapless = "0.7.16"
diff --git a/embassy-net-badgelink/Cargo.toml b/embassy-net-badgelink/Cargo.toml
index ab412ce829b90de476fe877eccc9537777467671..998f909b71dba823605f9cd79aa227d8b05f93ec 100644
--- a/embassy-net-badgelink/Cargo.toml
+++ b/embassy-net-badgelink/Cargo.toml
@@ -5,15 +5,15 @@ edition = "2021"
 authors = ["zdmx <hi@zdmx.me>"]
 
 [dependencies]
-embassy-time = "0.1.1"
+embassy-time = "0.1.2"
 embassy-sync = "0.2.0"
 embassy-futures = "0.1.0"
 embassy-net-driver-channel = "0.1.0"
 
 embedded-hal = "0.2.7"
-embedded-hal-1 = { package = "embedded-hal", version = "1.0.0-alpha.10" }
+embedded-hal-1 = { package = "embedded-hal", version = "1.0.0-alpha.11" }
 embedded-hal-async = "0.2.0-alpha.1"
 serial-line-ip = "0.5.0"
 heapless = "0.7.16"
-esp32s3-hal = { version = "0.10.0", features = ["embedded-hal-async", "async"] }
+esp32s3-hal = { version = "0.11.0", features = ["embedded-hal-async", "async"] }
 esp-println = { version = "0.5.0", features = ["esp32s3"] }
diff --git a/src/demo_tasks.rs b/src/demo_tasks.rs
index 98a399d5c690599f9e8e0fc91aeb3db229e2ad1c..d4282c8be4c7986330bedeb5448c7c0712121b49 100644
--- a/src/demo_tasks.rs
+++ b/src/demo_tasks.rs
@@ -277,7 +277,7 @@ pub async fn captouch_demo(display: &mut Display) {
     }
 }
 
-pub async fn badgelink_demo(badgelink: &mut BadgeLink, uart0: BadgenetUartLeft, uart1: BadgenetUartRight, rng: &'static mut Rng<'static>) -> (&'static mut BadgenetUartLeft, &'static mut BadgenetUartRight,  &'static mut Rng<'static>) {
+pub async fn badgelink_demo(badgelink: &mut BadgeLink, uart0: BadgenetUartLeft, uart1: BadgenetUartRight, rng: &'static mut Rng) -> (&'static mut BadgenetUartLeft, &'static mut BadgenetUartRight,  &'static mut Rng) {
     badgelink.left_badgelink().unwrap();
     badgelink.right_badgelink().unwrap();
 
@@ -303,8 +303,8 @@ pub async fn badgelink_demo(badgelink: &mut BadgeLink, uart0: BadgenetUartLeft,
     Timer::after(Duration::from_millis(10)).await;
 
     let spawner = Spawner::for_current_executor().await;
-    spawner.spawn(listen_task(network_stack_left)).unwrap();
-    spawner.spawn(send_task(network_stack_right, addr_left)).unwrap();
+    spawner.spawn(listen_task(network_stack_right)).unwrap();
+    spawner.spawn(send_task(network_stack_left, addr_right)).unwrap();
 
     loop {
         Timer::after(Duration::from_secs(10)).await;
@@ -313,8 +313,8 @@ pub async fn badgelink_demo(badgelink: &mut BadgeLink, uart0: BadgenetUartLeft,
 
 /* 
 #[embassy_executor::task]
-async fn listen_task(mut uart: BadgenetUartLeft) {
-    let mut data = [0u8;10];
+async fn listen_task(mut uart: BadgenetUartRight) {
+    let mut data = [0u8;100];
     println!("ready to recv");
     loop {
         uart.read(&mut data).await.unwrap();
@@ -323,14 +323,15 @@ async fn listen_task(mut uart: BadgenetUartLeft) {
 }
 
 #[embassy_executor::task]
-async fn send_task(mut uart: BadgenetUartRight) {
-    let data = [0,1,2,3,4];
+async fn send_task(mut uart: BadgenetUartLeft) {
+    let data = [0;128];
     loop {
         uart.write_bytes(&data).unwrap();
         println!("sent");
         Timer::after(Duration::from_secs(1)).await;
     }
-}*/
+}
+*/
 
 #[embassy_executor::task]
 async fn listen_task(network_stack: &'static Stack<Device<'static>>) {
@@ -380,7 +381,7 @@ async fn send_task(network_stack: &'static Stack<Device<'static>>, addr_left: Ip
     socket_right.bind(2345).unwrap();
 
     let endpoint = IpEndpoint::new(addr_left.into_address(), 1234);
-    let send_data = [1,2,3,4,5];
+    let send_data = [0;128];
 
     loop {
         socket_right.send_to(&send_data, endpoint).await.unwrap();
diff --git a/src/flow3r/display/display_interface.rs b/src/flow3r/display/display_interface.rs
index 0d6870b3f62c7a2b14bbc3c39898ba780d048ea0..d5a141b9aa9b071dcda8c8d5abb7093388c5ac64 100644
--- a/src/flow3r/display/display_interface.rs
+++ b/src/flow3r/display/display_interface.rs
@@ -63,7 +63,7 @@ where
         let transfer = spi
             .dma_write(cmds)
             .map_err(|_| DisplayError::BusWriteError)?;
-        let (cmds, spi) = transfer.wait();
+        let (cmds, spi) = transfer.wait().ok().unwrap(); // TODO fix
         let _ = self.spi.insert(spi);
 
         self.cs.set_high().ok();
@@ -90,7 +90,7 @@ where
             i += 1;
         }*/
 
-        let (buf, spi) = transfer.wait();
+        let (buf, spi) = transfer.wait().ok().unwrap();
         let _ = self.spi.insert(spi);
 
         self.cs.set_high().ok();
diff --git a/src/flow3r/leds.rs b/src/flow3r/leds.rs
index a63264447ae645d6509de814be3200312e6cf6af..1d4fbd2ca71aee409e1598d6fa298748f42b4d08 100644
--- a/src/flow3r/leds.rs
+++ b/src/flow3r/leds.rs
@@ -1,13 +1,12 @@
 use esp_hal_smartled::{smartLedAdapter, SmartLedsAdapter};
 use hal::{
-    gpio::{Gpio14, GpioPin, Unknown},
-    pulse_control::{Channel0, ConfiguredChannel0},
+    gpio::{Gpio14, Unknown}, rmt::Channel0, Rmt,
 };
 
-pub type Leds = SmartLedsAdapter<ConfiguredChannel0<'static, GpioPin<Unknown, 14>>, 961>;
+pub type Leds = SmartLedsAdapter<Channel0<0>, 0, 961>;
 
-pub fn init_leds(channel: Channel0, pin: Gpio14<Unknown>) -> Leds {
-    <smartLedAdapter!(40)>::new(channel, pin)
+pub fn init_leds(rmt: Rmt, pin: Gpio14<Unknown>) -> Leds {
+    <smartLedAdapter!(0, 40)>::new(rmt.channel0, pin)
 }
 
 pub fn brightness_fade_in_out(brightness: (u8, bool), max: u8, min: u8) -> (u8, bool) {
diff --git a/src/flow3r/mod.rs b/src/flow3r/mod.rs
index 89cc941d3eee34d3578625e7cf4619face8b89bd..39f820ecba487970308fa5029d718c4c0a5b7ddd 100644
--- a/src/flow3r/mod.rs
+++ b/src/flow3r/mod.rs
@@ -27,7 +27,7 @@ pub struct Flow3r {
     pub leds: Leds,
     pub uart0: BadgenetUartLeft,
     pub uart1: BadgenetUartRight,
-    pub rng: &'static mut Rng<'static>,
+    pub rng: &'static mut Rng,
 }
 
 impl Flow3r {
@@ -40,7 +40,7 @@ impl Flow3r {
         leds: Leds,
         uart0: BadgenetUartLeft,
         uart1: BadgenetUartRight,
-        rng: &'static mut Rng<'static>,
+        rng: &'static mut Rng,
     ) -> Self {
         Self {
             badgelink,
diff --git a/src/flow3r/ui/main_menu.rs b/src/flow3r/ui/main_menu.rs
index 436588c6f01cb17a65bd242540461ad74fc90841..dd602dd75beeb7720b2fe6a1c34f67916bdd2978 100644
--- a/src/flow3r/ui/main_menu.rs
+++ b/src/flow3r/ui/main_menu.rs
@@ -17,7 +17,7 @@ use crate::{
 static UART_LEFT: StaticCell<BadgenetUartLeft> = StaticCell::new();
 static UART_RIGHT: StaticCell<BadgenetUartRight> = StaticCell::new();
 
-pub async fn main_menu(mut display: Display, inputs: InputHandler, mut imu: ImuHandler, mut badgelink: BadgeLink, uart0: BadgenetUartLeft, uart1: BadgenetUartRight, mut rng: &'static mut Rng<'static>) -> ! {
+pub async fn main_menu(mut display: Display, inputs: InputHandler, mut imu: ImuHandler, mut badgelink: BadgeLink, uart0: BadgenetUartLeft, uart1: BadgenetUartRight, mut rng: &'static mut Rng) -> ! {
     let mut inputs = inputs.split();
 
     let mut uart0 = UART_LEFT.init(uart0);
@@ -111,7 +111,7 @@ async fn play_transition_animation<'a>(
     }
 }
 
-async fn start_current_app(app: &str, display: &mut Display, imu: &mut ImuHandler, badgelink: &mut BadgeLink,  uart0: &'static mut BadgenetUartLeft, uart1: &'static mut BadgenetUartRight, rng: &'static mut Rng<'static>) -> (&'static mut BadgenetUartLeft, &'static mut BadgenetUartRight,  &'static mut Rng<'static>) {
+async fn start_current_app(app: &str, display: &mut Display, imu: &mut ImuHandler, badgelink: &mut BadgeLink,  uart0: &'static mut BadgenetUartLeft, uart1: &'static mut BadgenetUartRight, rng: &'static mut Rng) -> (&'static mut BadgenetUartLeft, &'static mut BadgenetUartRight,  &'static mut Rng) {
     match app {
         "input_test" => {display_demo(display).await; (uart0, uart1, rng)}
         "imu_test" =>{imu_demo(display, imu).await; (uart0, uart1, rng)}
diff --git a/src/runtime.rs b/src/runtime.rs
index d6e2ba89e8155390642530a3eb78d12dbbd95ebc..f4811823f27d8d87f3e41b326d5ad782769d634b 100644
--- a/src/runtime.rs
+++ b/src/runtime.rs
@@ -10,10 +10,8 @@ use hal::{
     ledc::LEDC,
     peripherals::{Peripherals, I2C0},
     prelude::*,
-    pulse_control::ClockSource,
     systimer::SystemTimer,
-    timer::TimerGroup,
-    PulseControl, Rng, Rtc, Spi, Uart, IO, uart::{self, TxRxPins}, gpio::{Gpio6, Unknown, Gpio4, Gpio7, Gpio5},
+    timer::TimerGroup, Rng, Rtc, Spi, Uart, IO, uart::{self, TxRxPins}, gpio::{Gpio6, Unknown, Gpio4, Gpio7, Gpio5}, Rmt,
 };
 use static_cell::StaticCell;
 
@@ -95,13 +93,11 @@ async fn init_runtime() {
     .unwrap();
 
     let io = IO::new(peripherals.GPIO, peripherals.IO_MUX);
-    let pulse = PulseControl::new(
+    let rmt = Rmt::new(
         peripherals.RMT,
+        80u32.MHz(),
         &mut system.peripheral_clock_control,
-        ClockSource::APB,
-        0,
-        0,
-        0,
+        &clocks,
     )
     .unwrap();
 
@@ -171,7 +167,7 @@ async fn init_runtime() {
     };
     let uart0_pins = TxRxPins::new_tx_rx(io.pins.gpio7.into_push_pull_output(), io.pins.gpio6.into_floating_input());
     let mut uart0 = Uart::new_with_config(peripherals.UART1, Some(uart0_config), Some(uart0_pins), &clocks, &mut system.peripheral_clock_control);
-    uart0.set_rx_fifo_full_threshold(READ_BUF_SIZE as u16);
+    uart0.set_rx_fifo_full_threshold(READ_BUF_SIZE as u16).unwrap();
 
     hal::interrupt::enable(
         hal::peripherals::Interrupt::UART1,
@@ -187,7 +183,7 @@ async fn init_runtime() {
     };
     let uart1_pins = TxRxPins::new_tx_rx(io.pins.gpio5.into_push_pull_output(), io.pins.gpio4.into_floating_input());
     let mut uart1 = Uart::new_with_config(peripherals.UART2, Some(uart1_config),Some(uart1_pins), &clocks, &mut system.peripheral_clock_control);
-    uart1.set_rx_fifo_full_threshold(READ_BUF_SIZE as u16);
+    uart1.set_rx_fifo_full_threshold(READ_BUF_SIZE as u16).unwrap();
 
     hal::interrupt::enable(
         hal::peripherals::Interrupt::UART2,
@@ -203,7 +199,7 @@ async fn init_runtime() {
     let imu = ImuHandler::new(i2c_busmanager.acquire_i2c());
     let inputs = InputHandler;
     let captouch = CaptouchHandler;
-    let leds = init_leds(pulse.channel0, io.pins.gpio14);
+    let leds = init_leds(rmt, io.pins.gpio14);
 
     let flow3r = Flow3r::new(badgelink, captouch, display, imu, inputs, leds, uart0, uart1, rng);
 
diff --git a/vendor/bmi270/Cargo.lock b/vendor/bmi270/Cargo.lock
new file mode 100644
index 0000000000000000000000000000000000000000..d51ecef76bd3ceb5be48e85aaef0f52561a53ead
--- /dev/null
+++ b/vendor/bmi270/Cargo.lock
@@ -0,0 +1,48 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "bmi270"
+version = "0.1.0"
+dependencies = [
+ "embedded-hal",
+ "fixedvec",
+]
+
+[[package]]
+name = "embedded-hal"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff"
+dependencies = [
+ "nb 0.1.3",
+ "void",
+]
+
+[[package]]
+name = "fixedvec"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b395ef2adf62bdeefcd1b59ad0dd2225c6c333ec79656ea79ac5285c46d051ea"
+
+[[package]]
+name = "nb"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f"
+dependencies = [
+ "nb 1.1.0",
+]
+
+[[package]]
+name = "nb"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d"
+
+[[package]]
+name = "void"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
diff --git a/vendor/display-interface/Cargo.lock b/vendor/display-interface/Cargo.lock
new file mode 100644
index 0000000000000000000000000000000000000000..cb23b8772040410beac1c92d12089cdeeb075130
--- /dev/null
+++ b/vendor/display-interface/Cargo.lock
@@ -0,0 +1,122 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "async-trait"
+version = "0.1.72"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "byte-slice-cast"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c"
+
+[[package]]
+name = "display-interface"
+version = "0.5.0-alpha.1"
+dependencies = [
+ "async-trait",
+ "embedded-dma",
+]
+
+[[package]]
+name = "display-interface-i2c"
+version = "0.5.0-alpha.1"
+dependencies = [
+ "async-trait",
+ "display-interface",
+ "embedded-hal",
+ "embedded-hal-async",
+]
+
+[[package]]
+name = "display-interface-parallel-gpio"
+version = "0.7.0-alpha.1"
+dependencies = [
+ "display-interface",
+ "embedded-hal",
+]
+
+[[package]]
+name = "display-interface-spi"
+version = "0.5.0-alpha.1"
+dependencies = [
+ "async-trait",
+ "byte-slice-cast",
+ "display-interface",
+ "embedded-hal",
+ "embedded-hal-async",
+]
+
+[[package]]
+name = "embedded-dma"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "994f7e5b5cb23521c22304927195f236813053eb9c065dd2226a32ba64695446"
+dependencies = [
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "embedded-hal"
+version = "1.0.0-alpha.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7724ebabcadfeb15920571dd727bc8ccde8586e52f2890bdb8182fdf42c3ff2"
+
+[[package]]
+name = "embedded-hal-async"
+version = "0.2.0-alpha.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "918285ec7b18edb024d4adc64f6f16cdc7c4d72eadfc85c3313d1e0ff40e0229"
+dependencies = [
+ "embedded-hal",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "syn"
+version = "2.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"