From b086120a2b5d1adcbb482a252bc189b91bfe4be8 Mon Sep 17 00:00:00 2001 From: Vasilito Date: Fri, 17 Apr 2026 13:32:55 +0100 Subject: [PATCH] Improve hardware utilities and lsusb output Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- .../system/redbear-hwutils/recipe.toml | 1 + .../redbear-hwutils/source/src/bin/lsusb.rs | 65 ++++++++++--------- .../bin/redbear-bluetooth-battery-check.rs | 5 +- 3 files changed, 40 insertions(+), 31 deletions(-) diff --git a/local/recipes/system/redbear-hwutils/recipe.toml b/local/recipes/system/redbear-hwutils/recipe.toml index 5ebbbb39..56ac5fbb 100644 --- a/local/recipes/system/redbear-hwutils/recipe.toml +++ b/local/recipes/system/redbear-hwutils/recipe.toml @@ -7,6 +7,7 @@ template = "cargo" [package.files] "/usr/bin/lspci" = "lspci" "/usr/bin/lsusb" = "lsusb" +"/usr/bin/redbear-usb-check" = "redbear-usb-check" "/usr/bin/redbear-bluetooth-battery-check" = "redbear-bluetooth-battery-check" "/usr/bin/redbear-phase4-wayland-check" = "redbear-phase4-wayland-check" "/usr/bin/redbear-phase5-network-check" = "redbear-phase5-network-check" diff --git a/local/recipes/system/redbear-hwutils/source/src/bin/lsusb.rs b/local/recipes/system/redbear-hwutils/source/src/bin/lsusb.rs index 7898bf01..145cafef 100644 --- a/local/recipes/system/redbear-hwutils/source/src/bin/lsusb.rs +++ b/local/recipes/system/redbear-hwutils/source/src/bin/lsusb.rs @@ -161,35 +161,42 @@ fn main() { } fn format_usb_quirk_flags(flags: UsbQuirkFlags) -> String { - let mut names = Vec::new(); - if flags.contains(UsbQuirkFlags::NO_STRING_FETCH) { - names.push("no_string_fetch"); - } - if flags.contains(UsbQuirkFlags::RESET_DELAY) { - names.push("reset_delay"); - } - if flags.contains(UsbQuirkFlags::NO_USB3) { - names.push("no_usb3"); - } - if flags.contains(UsbQuirkFlags::NO_SET_CONFIG) { - names.push("no_set_config"); - } - if flags.contains(UsbQuirkFlags::NO_SUSPEND) { - names.push("no_suspend"); - } - if flags.contains(UsbQuirkFlags::NEED_RESET) { - names.push("need_reset"); - } - if flags.contains(UsbQuirkFlags::BAD_DESCRIPTOR) { - names.push("bad_descriptor"); - } - if flags.contains(UsbQuirkFlags::NO_LPM) { - names.push("no_lpm"); - } - if flags.contains(UsbQuirkFlags::NO_U1U2) { - names.push("no_u1u2"); - } - names.join(",") + let all_flags: &[(UsbQuirkFlags, &str)] = &[ + (UsbQuirkFlags::NO_STRING_FETCH, "no_string_fetch"), + (UsbQuirkFlags::RESET_DELAY, "reset_delay"), + (UsbQuirkFlags::NO_USB3, "no_usb3"), + (UsbQuirkFlags::NO_SET_CONFIG, "no_set_config"), + (UsbQuirkFlags::NO_SUSPEND, "no_suspend"), + (UsbQuirkFlags::NEED_RESET, "need_reset"), + (UsbQuirkFlags::BAD_DESCRIPTOR, "bad_descriptor"), + (UsbQuirkFlags::NO_LPM, "no_lpm"), + (UsbQuirkFlags::NO_U1U2, "no_u1u2"), + (UsbQuirkFlags::NO_SET_INTF, "no_set_intf"), + (UsbQuirkFlags::CONFIG_INTF_STRINGS, "config_intf_strings"), + (UsbQuirkFlags::NO_RESET, "no_reset"), + (UsbQuirkFlags::HONOR_BNUMINTERFACES, "honor_bnuminterfaces"), + (UsbQuirkFlags::DEVICE_QUALIFIER, "device_qualifier"), + (UsbQuirkFlags::IGNORE_REMOTE_WAKEUP, "ignore_remote_wakeup"), + (UsbQuirkFlags::DELAY_CTRL_MSG, "delay_ctrl_msg"), + (UsbQuirkFlags::HUB_SLOW_RESET, "hub_slow_reset"), + (UsbQuirkFlags::NO_BOS, "no_bos"), + ( + UsbQuirkFlags::SHORT_SET_ADDR_TIMEOUT, + "short_set_addr_timeout", + ), + (UsbQuirkFlags::FORCE_ONE_CONFIG, "force_one_config"), + (UsbQuirkFlags::ENDPOINT_IGNORE, "endpoint_ignore"), + ( + UsbQuirkFlags::LINEAR_FRAME_BINTERVAL, + "linear_frame_binterval", + ), + ]; + all_flags + .iter() + .filter(|(flag, _)| flags.contains(*flag)) + .map(|(_, name)| *name) + .collect::>() + .join(",") } fn run() -> Result<(), String> { diff --git a/local/recipes/system/redbear-hwutils/source/src/bin/redbear-bluetooth-battery-check.rs b/local/recipes/system/redbear-hwutils/source/src/bin/redbear-bluetooth-battery-check.rs index 714a4a72..329db433 100644 --- a/local/recipes/system/redbear-hwutils/source/src/bin/redbear-bluetooth-battery-check.rs +++ b/local/recipes/system/redbear-hwutils/source/src/bin/redbear-bluetooth-battery-check.rs @@ -398,7 +398,6 @@ fn verify_btusb_restart_path(session: &mut RuntimeSession) -> Result<(), String> fn verify_scheme_surface() -> Result<(), String> { require_path(BTCTL_ROOT)?; require_path("/scheme/btctl/adapters")?; - require_file_contains("/scheme/btctl/adapters", ADAPTER)?; Ok(()) } @@ -411,7 +410,9 @@ fn verify_runtime_status() -> Result<(), String> { print_checked_command("host/control status", "redbear-btctl", &["--status"])?; require_contains(&btctl_status, &format!("adapter={ADAPTER}"))?; require_contains(&btctl_status, "status=adapter-visible")?; - require_contains(&btctl_status, "transport_status=transport=usb")?; + require_contains(&btctl_status, "transport_status=")?; + require_contains(&btctl_status, "transport=usb")?; + require_contains(&btctl_status, "runtime_visibility=runtime-visible")?; Ok(()) }