MCPcopy Index your code
hub / github.com/FrameworkComputer/framework-system / me_info

Function me_info

framework_lib/src/commandline/mod.rs:2336–2461  ·  view source on GitHub ↗
(verbose: bool, dump_path: Option<&str>)

Source from the content-addressed store, hash-verified

2334}
2335
2336fn me_info(verbose: bool, dump_path: Option<&str>) {
2337 let smbios = if let Some(path) = dump_path {
2338 #[cfg(feature = "uefi")]
2339 let data: Option<Vec<u8>> = crate::fw_uefi::fs::shell_read_file(path);
2340 #[cfg(not(feature = "uefi"))]
2341 let data = match std::fs::read(path) {
2342 Ok(data) => Some(data),
2343 Err(e) => {
2344 error!("Failed to read SMBIOS dump file '{}': {}", path, e);
2345 None
2346 }
2347 };
2348 data.and_then(|d| smbios::SmbiosStore::from_table_data(d, 3, 0))
2349 } else {
2350 get_smbios()
2351 };
2352 if smbios.is_none() {
2353 error!("Failed to get SMBIOS data");
2354 return;
2355 }
2356 let smbios = smbios.unwrap();
2357
2358 // Track ME family for bootguard parsing
2359 let mut me_family: Option<csme::MeFamily> = None;
2360
2361 // Try to get ME version from sysfs first (Linux only, live system only)
2362 #[cfg(target_os = "linux")]
2363 if dump_path.is_none() {
2364 if let Ok(csme_info) = csme::csme_from_sysfs() {
2365 println!("Intel ME Information (from sysfs)");
2366 println!(" Enabled: {}", csme_info.enabled);
2367 println!(" Firmware Version: {}", csme_info.main_ver);
2368 if csme_info.main_ver != csme_info.recovery_ver
2369 || csme_info.main_ver != csme_info.fitc_ver
2370 {
2371 println!(" Recovery Version: {}", csme_info.recovery_ver);
2372 println!(" FITC Version: {}", csme_info.fitc_ver);
2373 }
2374 let family = csme::MeFamily::from_version(csme_info.main_ver.major);
2375 println!(" ME Family: {}", family);
2376 me_family = Some(family);
2377 }
2378 }
2379
2380 // Get ME version from SMBIOS type 0xDD (FVI)
2381 let smbios_version = csme::me_version_from_smbios(&smbios);
2382 if let Some(ref fvi_version) = smbios_version {
2383 // If sysfs wasn't available, use SMBIOS version as primary
2384 if me_family.is_none() {
2385 println!("Intel ME Version (from SMBIOS Type 0xDD)");
2386 println!(" Firmware Version: {}", fvi_version);
2387 let family = csme::MeFamily::from_version(fvi_version.major as u32);
2388 println!(" ME Family: {}", family);
2389 me_family = Some(family);
2390 } else if verbose {
2391 // In verbose mode, also show SMBIOS version for comparison
2392 println!("Intel ME Version (from SMBIOS Type 0xDD)");
2393 println!(" Firmware Version: {}", fvi_version);

Callers 1

run_with_argsFunction · 0.85

Calls 8

shell_read_fileFunction · 0.85
get_smbiosFunction · 0.85
csme_from_sysfsFunction · 0.85
me_version_from_smbiosFunction · 0.85
me_fwsts_from_smbiosFunction · 0.85
mei1Method · 0.80
bootguard_statusMethod · 0.80

Tested by

no test coverage detected