diff --git a/components/badge23/CMakeLists.txt b/components/badge23/CMakeLists.txt
index 65959cc07b0844519af076d17349682758e801bc..2fa07d9f4d6a057db613d19141233fb1da58a8e9 100644
--- a/components/badge23/CMakeLists.txt
+++ b/components/badge23/CMakeLists.txt
@@ -12,7 +12,6 @@ idf_component_register(
     INCLUDE_DIRS
         include
     REQUIRES
-        badge23_hwconfig
         flow3r_bsp
         espressif__led_strip
 )
diff --git a/components/badge23/audio.c b/components/badge23/audio.c
index 726e4c59653fc16fbc60050032a5a2043af5f2e5..c721c8756152e8d87cf4131b3b1acbce85b26bc5 100644
--- a/components/badge23/audio.c
+++ b/components/badge23/audio.c
@@ -2,7 +2,6 @@
 #include "badge23/synth.h" 
 #include "badge23/scope.h"
 #include "badge23/lock.h"
-#include "badge23_hwconfig.h"
 
 #include "driver/i2s.h"
 #include "driver/i2c.h"
diff --git a/components/badge23/captouch.c b/components/badge23/captouch.c
index f0ad5f5038835d5d7711a2316258c02ebd8d7b1c..6163b0103e8c024a1d363f6557eb3e9af8ad4b15 100644
--- a/components/badge23/captouch.c
+++ b/components/badge23/captouch.c
@@ -2,7 +2,6 @@
 //#include <string.h>
 #include "esp_log.h"
 #include "driver/i2c.h"
-#include "badge23_hwconfig.h"
 #include <stdint.h>
 #include <freertos/FreeRTOS.h>
 #include <freertos/atomic.h>
diff --git a/components/badge23/espan.c b/components/badge23/espan.c
index 9b6d75d4bd166be263ac5587f4517d795b7b2b02..a2aa2ff754e131d3cebc2abf4b110aacceae6596 100644
--- a/components/badge23/espan.c
+++ b/components/badge23/espan.c
@@ -3,9 +3,10 @@
 #include "badge23/leds.h"
 #include "badge23/display.h"
 #include "badge23/spio.h"
-#include "badge23_hwconfig.h"
 #include "badge23/lock.h"
 
+#include "flow3r_bsp.h"
+
 #include "esp_log.h"
 #include "driver/i2c.h"
 #include "driver/spi_master.h"
@@ -97,7 +98,7 @@ void os_app_main(void)
     display_init();
 
     locks_init();
-    ESP_LOGI(TAG, "Starting on %s...", badge23_hw_name);
+    ESP_LOGI(TAG, "Starting on %s...", flow3r_bsp_hw_name);
     ESP_ERROR_CHECK(i2c_master_init());
     ESP_LOGI(TAG, "I2C initialized successfully");
 
diff --git a/components/badge23/leds.c b/components/badge23/leds.c
index 5accc7e687821ccce0ed2e13565f72970f6be9e5..321910f719f3ba8b24eef8f6a7d30ca69f87ecfd 100644
--- a/components/badge23/leds.c
+++ b/components/badge23/leds.c
@@ -7,7 +7,6 @@
 #include "esp_system.h"
 #include "badge23/leds.h"
 #include "badge23/lock.h"
-#include "badge23_hwconfig.h"
 
 static uint8_t leds_brightness = 69;;
 static uint8_t leds_slew_rate = 255;
diff --git a/components/badge23/spio.c b/components/badge23/spio.c
index a918912af7169de9f8a54906827d0812b92a4a95..c405026cc7731a748b63b284a7ea24681c50ed67 100644
--- a/components/badge23/spio.c
+++ b/components/badge23/spio.c
@@ -1,6 +1,5 @@
 //special purpose input outputs
 #include "driver/gpio.h"
-#include "badge23_hwconfig.h"
 #include "stdint.h"
 #include "badge23/spio.h"
 #include "badge23/lock.h"
diff --git a/components/badge23_hwconfig/include/badge23_hwconfig.h b/components/badge23_hwconfig/include/badge23_hwconfig.h
deleted file mode 100644
index 5849a9149d30d8832a25f2acec68119837e64f32..0000000000000000000000000000000000000000
--- a/components/badge23_hwconfig/include/badge23_hwconfig.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#pragma once
-
-#include "sdkconfig.h"
-
-// internal name of the badge hardware version (proto1, proto3, etc).
-const char *badge23_hw_name;
diff --git a/components/flow3r_bsp/CMakeLists.txt b/components/flow3r_bsp/CMakeLists.txt
index 52d3990ff90db2cccfc6b6ba6eff8bb02cc3bc6c..a15017d094bf85df30f677765b6d4235562999a0 100644
--- a/components/flow3r_bsp/CMakeLists.txt
+++ b/components/flow3r_bsp/CMakeLists.txt
@@ -2,6 +2,7 @@ idf_component_register(
     SRCS
 		flow3r_bsp_display.c
 		flow3r_bsp_gc9a01.c
+		flow3r_bsp_hwconfig.c
     INCLUDE_DIRS
 		.
 )
diff --git a/components/flow3r_bsp/flow3r_bsp.h b/components/flow3r_bsp/flow3r_bsp.h
index ef1fd76cfec2b23d61df66e2c1989d45e4967dd3..58ff3056c2be94c85eb104faf540899b8079f5bb 100644
--- a/components/flow3r_bsp/flow3r_bsp.h
+++ b/components/flow3r_bsp/flow3r_bsp.h
@@ -29,4 +29,7 @@ void flow3r_bsp_display_set_backlight(uint8_t percent);
 
 // Currently same on all generations. Might change on future revisions.
 #define FLOW3R_BSP_DISPLAY_WIDTH 240
-#define FLOW3R_BSP_DISPLAY_HEIGHT 240
\ No newline at end of file
+#define FLOW3R_BSP_DISPLAY_HEIGHT 240
+
+// Badge hardware generation name, human-readable.
+const char *flow3r_bsp_hw_name;
\ No newline at end of file
diff --git a/components/badge23_hwconfig/badge23_hwconfig.c b/components/flow3r_bsp/flow3r_bsp_hwconfig.c
similarity index 52%
rename from components/badge23_hwconfig/badge23_hwconfig.c
rename to components/flow3r_bsp/flow3r_bsp_hwconfig.c
index c583785f352e0dbe23eaeface2567c2bb8c3dbd3..8b78878db7be295484852a2462482c7ff6f742d5 100644
--- a/components/badge23_hwconfig/badge23_hwconfig.c
+++ b/components/flow3r_bsp/flow3r_bsp_hwconfig.c
@@ -1,15 +1,15 @@
-#include "badge23_hwconfig.h"
+#include "sdkconfig.h"
 
 #if defined(CONFIG_BADGE23_HW_GEN_P1)
-const char *badge23_hw_name = "proto1";
+const char *flow3r_bsp_hw_name = "proto1";
 #elif defined(CONFIG_BADGE23_HW_GEN_P3)
-const char *badge23_hw_name = "proto3";
+const char *flow3r_bsp_hw_name = "proto3";
 #elif defined(CONFIG_BADGE23_HW_GEN_P4)
-const char *badge23_hw_name = "proto4";
+const char *flow3r_bsp_hw_name = "proto4";
 #elif defined(CONFIG_BADGE23_HW_GEN_ADILESS)
-const char *badge23_hw_name = "adiless";
+const char *flow3r_bsp_hw_name = "adiless";
 #elif defined(CONFIG_BADGE23_HW_GEN_P6)
-const char *badge23_hw_name = "proto6";
+const char *flow3r_bsp_hw_name = "proto6";
 #else
 #error "Badge23 Hardware Generation must be set!"
 #endif
diff --git a/components/badge23_hwconfig/CMakeLists.txt b/components/st3m/CMakeLists.txt
similarity index 54%
rename from components/badge23_hwconfig/CMakeLists.txt
rename to components/st3m/CMakeLists.txt
index a807c6af808a8c0d51c08f10acfdea11cd1b71a5..29dde06d87a05743d6223e465947118c811b76d3 100644
--- a/components/badge23_hwconfig/CMakeLists.txt
+++ b/components/st3m/CMakeLists.txt
@@ -1,6 +1,7 @@
 idf_component_register(
     SRCS
-        badge23_hwconfig.c
     INCLUDE_DIRS
-        include
+        .
+    REQUIRES
+        flow3r_bsp
 )
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
index 08d677031a1ef302b26334ae10829fa26ecc4d15..9c48a075709a06037c948ca6af2a5864e20e0269 100644
--- a/main/CMakeLists.txt
+++ b/main/CMakeLists.txt
@@ -104,7 +104,7 @@ set(MICROPY_SOURCE_QSTR
 set(IDF_COMPONENTS
     app_update
     badge23
-    badge23_hwconfig
+    flow3r_bsp
     bootloader_support
     bt
     driver
diff --git a/usermodule/mp_audio.c b/usermodule/mp_audio.c
index b2300b88d542b2c19ccb1aa9631e972357895801..2634c1a831bd5206904dd972b6b0a1ce3a9d9204 100644
--- a/usermodule/mp_audio.c
+++ b/usermodule/mp_audio.c
@@ -12,7 +12,6 @@
 #include "py/runtime.h"
 
 #include "badge23/audio.h"
-#include "badge23_hwconfig.h"
 
 // documentation: these are all super thin wrappers for the c api in components/badge23/include/badge23/audio.h
 
diff --git a/usermodule/mp_badge_link.c b/usermodule/mp_badge_link.c
index 4111816972ab25e3b98f0fb7268fdacdb1902ea4..5e07e18c7512e3142667015ce6498990942eac70 100644
--- a/usermodule/mp_badge_link.c
+++ b/usermodule/mp_badge_link.c
@@ -17,7 +17,6 @@
 #include "badge23/display.h"
 #include "badge23/spio.h"
 #include "badge23/espan.h"
-#include "badge23_hwconfig.h"
 
 mp_obj_t mp_ctx_from_ctx(Ctx *ctx);
 
diff --git a/usermodule/mp_hardware.c b/usermodule/mp_hardware.c
index ed5cf36587339395ce51ba88b37d04ed2e893c06..18bb7d168637fbd820c4a7357ca81f53de80d7b9 100644
--- a/usermodule/mp_hardware.c
+++ b/usermodule/mp_hardware.c
@@ -16,7 +16,8 @@
 #include "badge23/display.h"
 #include "badge23/spio.h"
 #include "badge23/espan.h"
-#include "badge23_hwconfig.h"
+
+#include "flow3r_bsp.h"
 
 mp_obj_t mp_ctx_from_ctx(Ctx *ctx);
 
@@ -166,7 +167,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_dump_all_sources_obj, 0, 2, mp_dum
 
 
 STATIC mp_obj_t mp_version(void) {
-    mp_obj_t str = mp_obj_new_str(badge23_hw_name, strlen(badge23_hw_name));
+    mp_obj_t str = mp_obj_new_str(flow3r_bsp_hw_name, strlen(flow3r_bsp_hw_name));
     return str;
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_version_obj, mp_version);
diff --git a/usermodule/mp_leds.c b/usermodule/mp_leds.c
index 4d9baf698e3dc461386ad5c53f7000253a5c2b3c..8f7e35a711446d8a8052ee784303a42e149dfee3 100644
--- a/usermodule/mp_leds.c
+++ b/usermodule/mp_leds.c
@@ -13,7 +13,6 @@
 
 #include "badge23/leds.h"
 #include "badge23/espan.h"
-#include "badge23_hwconfig.h"
 
 STATIC mp_obj_t mp_leds_set_brightness(mp_obj_t b) {
     leds_set_brightness(mp_obj_get_int(b));