From 5778a636f3a9acf3cf2e13b84f579458874a2969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kalle=20Ahlstr=C3=B6m?= Date: Mon, 2 Jun 2025 23:25:52 +0300 Subject: [PATCH 1/2] daemon: make tdp_service optional There seems to have been recent addition of requiring a valid TDPManagerService in the user daemon, which in turn breaks the service for people who use steamos-manager on devices such as HTPCs or other non-supported hardware. Fix this by making the TDP configuration optional in the user daemon. --- src/daemon/user.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/daemon/user.rs b/src/daemon/user.rs index c5db378..359dfa9 100644 --- a/src/daemon/user.rs +++ b/src/daemon/user.rs @@ -109,7 +109,12 @@ pub(crate) type Command = DaemonCommand<()>; async fn create_connections( channel: Sender, -) -> Result<(Connection, Connection, JobManagerService, TdpManagerService)> { +) -> Result<( + Connection, + Connection, + JobManagerService, + Result, +)> { let system = Connection::system().await?; let connection = Builder::session()? .name("com.steampowered.SteamOSManager1")? @@ -121,7 +126,7 @@ async fn create_connections( let jm_service = JobManagerService::new(job_manager, rx, system.clone()); let (tdp_tx, rx) = unbounded_channel(); - let tdp_service = TdpManagerService::new(rx, &system, &connection).await?; + let tdp_service = TdpManagerService::new(rx, &system, &connection).await; create_interfaces(connection.clone(), system.clone(), channel, jm_tx, tdp_tx).await?; @@ -151,7 +156,9 @@ pub async fn daemon() -> Result<()> { let mut daemon = Daemon::new(subscriber, system, rx).await?; daemon.add_service(mirror_service); - daemon.add_service(tdp_service); + if let Ok(tdp_service) = tdp_service { + daemon.add_service(tdp_service); + } session.object_server().at("/", ObjectManager {}).await?; From a76226b328f7719bab85532ea434c61859d58928 Mon Sep 17 00:00:00 2001 From: Matthew Schwartz Date: Mon, 2 Jun 2025 22:19:02 -0700 Subject: [PATCH 2/2] daemon: log error if TdpManagerService is not available --- src/daemon/user.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/daemon/user.rs b/src/daemon/user.rs index 359dfa9..55e3908 100644 --- a/src/daemon/user.rs +++ b/src/daemon/user.rs @@ -11,7 +11,7 @@ use anyhow::{bail, Result}; use serde::{Deserialize, Serialize}; use std::path::PathBuf; use tokio::sync::mpsc::{unbounded_channel, Sender}; -use tracing::error; +use tracing::{error, info}; use tracing_subscriber::prelude::*; use tracing_subscriber::{fmt, Registry}; #[cfg(not(test))] @@ -158,6 +158,8 @@ pub async fn daemon() -> Result<()> { daemon.add_service(mirror_service); if let Ok(tdp_service) = tdp_service { daemon.add_service(tdp_service); + } else if let Err(e) = tdp_service { + info!("TdpManagerService not available: {e}"); } session.object_server().at("/", ObjectManager {}).await?;