diff --git a/Cargo.toml b/Cargo.toml
index f9e95fb..a40937e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,7 +6,7 @@ description = "Decode SMBIOS/DMI information into accessible data structures"
documentation = "https://docs.rs/dmidecode/"
repository = "https://github.com/jcreekmore/dmidecode"
license = "MIT"
-rust-version = "1.62"
+rust-version = "1.69"
[dependencies]
bitflags = "1.2"
@@ -16,5 +16,5 @@ pretty_assertions = "0.6"
lazy_static = "1.4"
[features]
-default = []
+default = ["std"]
std = []
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..72972af
--- /dev/null
+++ b/README.md
@@ -0,0 +1,68 @@
+# dmidecode
+
+[
](https://github.com/jcreekmore/dmidecode)
+[
](https://crates.io/crates/dmidecode)
+[
](https://docs.rs/dmidecode)
+[
](https://github.com/jcreekmore/dmidecode/actions?query=branch%3Amaster)
+
+A Rust library for parsing raw **SMBIOS/DMI tables**. This crate lets you read and decode system firmware information provided via `/sys/firmware/dmi/tables/` on Linux, or directly from memory dumps.
+
+```toml
+# Cargo.toml
+[dependencies]
+dmidecode = "0.9"
+```
+
+## Example
+
+```rust
+use dmidecode::Structure;
+
+fn main() -> Result<(), Box> {
+ eprintln!("Collecting DMI Information...");
+
+ // Get the SMBIOS header and DMI table from sysfs.
+ let buf = std::fs::read("/sys/firmware/dmi/tables/smbios_entry_point")?;
+ let dmi = std::fs::read("/sys/firmware/dmi/tables/DMI")?;
+ let entry = dmidecode::EntryPoint::search(&buf)?;
+
+ for table in entry.structures(&dmi) {
+ let Ok(table) = table else {
+ eprintln!("DMI tables contain malformed structure: {table:?}");
+ continue;
+ };
+
+ match table {
+ Structure::System(system) => {
+ // do stuff
+ }
+ Structure::BaseBoard(base_board) => {
+ // do stuff
+ }
+ // ...
+ _ => continue,
+ }
+ }
+
+ Ok(())
+}
+```
+
+
+## No-std support
+
+In no_std mode, almost all of the same API is available and works the same way.
+To depend on `dmidecode` in `no_std` mode, disable our default enabled "std" feature in
+`Cargo.toml`.
+
+```toml
+[dependencies]
+dmidecode = { version = "0.9", default-features = false }
+```
+
+## Rust Version Support
+The minimum supported Rust version is documented in the Cargo.toml file. This may be bumped in minor releases as necessary.
+
+## License
+
+`dmidecode` is released under the terms of the [MIT](./LICENSE) license.