{"id":15132831,"url":"https://github.com/piotrpdev/rspi-bios","last_synced_at":"2026-01-20T01:03:35.989Z","repository":{"id":255775254,"uuid":"842619475","full_name":"piotrpdev/rspi-bios","owner":"piotrpdev","description":"Raspberry Pi dashboard that mimics the style of old BIOS designs.","archived":false,"fork":false,"pushed_at":"2024-09-12T23:26:17.000Z","size":816,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-05T10:43:26.969Z","etag":null,"topics":["axum","bios","raspberry-pi","rust","sse"],"latest_commit_sha":null,"homepage":"https://rspi.piotrp.dev/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/piotrpdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-14T18:07:01.000Z","updated_at":"2024-09-12T23:24:59.000Z","dependencies_parsed_at":"2024-09-10T04:32:29.343Z","dependency_job_id":null,"html_url":"https://github.com/piotrpdev/rspi-bios","commit_stats":null,"previous_names":["piotrpdev/rspi-bios"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piotrpdev%2Frspi-bios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piotrpdev%2Frspi-bios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piotrpdev%2Frspi-bios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piotrpdev%2Frspi-bios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/piotrpdev","download_url":"https://codeload.github.com/piotrpdev/rspi-bios/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247406068,"owners_count":20933802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axum","bios","raspberry-pi","rust","sse"],"created_at":"2024-09-26T04:40:39.395Z","updated_at":"2026-01-20T01:03:35.938Z","avatar_url":"https://github.com/piotrpdev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-configure-file {\n  \"MD033\": false,\n  \"MD041\": false\n} --\u003e\n\u003cdiv align=\"center\"\u003e\n\n# RSPI BIOS\n\n[Raspberry Pi][raspberry] dashboard that mimics the style of old [BIOS][bios] designs.\n\n\u003cimg alt=\"demo gif\" width=\"480\" src=\"./.github/img/rspi-bios.gif\" /\u003e\n\n\u003c/div\u003e\n\n## Features\n\n- [x] Served by a Rust-powered web server\n  - *...using the [axum] crate*\n- [x] Displays real system data from the Raspberry Pi\n  - *...using the [sysinfo] crate*\n- [x] Implements [Server-Sent Events (SSE)][sse] for real-time updates\n  - *...using the axum and [tokio] crates*\n- [x] Uses templating for HTML generation\n  - *...using the [askama] crate*\n- [x] Mimics old [BIOS](bios) designs\n  - *...using the [TuiCss][tuicss] package*\n- [x] Served over HTTPS\n  - *...preferably using [Cloudflare Tunnels][tunnel] and an [Origin CA cert][origin]*\n\n## Usage\n\n\u003e [!NOTE]\n\u003e The package's [`postinst`][postinst] script allows `rspi-bios` to bind to low ports.\n\n```bash\n# Download package from releases\nwget https://github.com/piotrpdev/rspi-bios/releases/latest/download/rspi-bios_1.0.0-1_arm64.deb\n\n# Install package\nsudo dpkg -i rspi-bios_1.0.0-1_arm64.deb\n\n# Copy certs (you need to provide your own)\nsudo cp ~/rspi-bios/certs/{cert,key}.pem /etc/rspi-bios/certs/\n\n# Run and set to launch on boot\nsudo systemctl enable --now rspi-bios\n```\n\n## Development\n\n### Cross-compile for Raspberry Pi\n\n\u003e [!NOTE]\n\u003e You can look at [`.github/workflows/publish.yml`][publish] to see the instructions\n\u003e below in action.\n\n#### Build\n\n```bash\n# Install dependencies (Ubuntu 24.04 LTS)\n# You may need some or all of these\n# See https://aws.github.io/aws-lc-rs/requirements/linux.html\nsudo apt-get install -y clang libclang1 cmake gcc-aarch64-linux-gnu\n# (32-bit ARMv7) sudo apt-get install -y gcc-arm-linux-gnueabihf\ncargo install --force --locked bindgen-cli\n\n# Add target (linker already configured for you in ./.cargo/config.toml)\nrustup target add aarch64-unknown-linux-gnu\n# (32-bit ARMv7) rustup target add armv7-unknown-linux-gnueabihf\n\n# Build\ncargo build --release --target=aarch64-unknown-linux-gnu\n# (32-bit ARMv7) cargo build --release --target=armv7-unknown-linux-gnueabihf\n# Set RUSTFLAGS='-C target-feature=+crt-static' if target uses older version of glibc\n```\n\n#### Run\n\n```bash\n# Copy\nssh piotrpdev@192.168.0.200 \"mkdir -p ~/rspi-bios\" \u0026\u0026 \\\nscp -r target/armv7-unknown-linux-gnueabihf/release/rspi-bios templates/ certs/ \\\n  piotrpdev@192.168.0.200:~/rspi-bios/\n\n# Run\nssh -t piotrpdev@192.168.0.200 \"chmod +x ~/rspi-bios/rspi-bios \u0026\u0026 ~/rspi-bios/rspi-bios\"\n```\n\n#### Bind to low port (optional)\n\n```bash\n# (Optional) Allow rspi-bios to bind low ports without root\n# https://stackoverflow.com/a/414258/19020549\nsudo setcap CAP_NET_BIND_SERVICE=+eip ./rspi-bios\n\n# Run on low port\n./rspi-bios --https-port 443\n```\n\n#### Start on boot (optional)\n\nA template [`rspi-bios.service`][service] file is included in the repo if you're\nusing `systemd` and want to automatically run the script on startup e.g.:\n\n```bash\n# Edit the template\nvim ./debian/rspi-bios.service\n\n# Copy it\nsudo cp ./debian/rspi-bios.service /lib/systemd/system/\n\n# Start on boot (--now to start now)\nsudo systemctl enable rspi-bios.service\n```\n\n#### Directories\n\nIn production, I recommend creating/using these directories:\n\n- `/usr/local/bin/` (place `rspi-bios` here)\n- `/var/log/rspi-bios/`\n- `/etc/rspi-bios/certs/` (place `{cert,key}.pem` here)\n- `/usr/share/rspi-bios/html/` (place `index.html` here)\n\n### Build `.deb`\n\nYou will need [`cargo-deb`][cargo-deb].\n\n```bash\ncargo install cargo-deb\ncargo deb --locked --target=aarch64-unknown-linux-gnu\n# Set RUSTFLAGS='-C target-feature=+crt-static' if target uses older version of glibc\n```\n\n### Tools\n\nI recommend installing [`cargo-watch`][cargo-watch] if you plan on making a lot\nof changes.\n\n```bash\ncargo install cargo-watch\ncargo-watch --watch src --watch templates -x run\n```\n\n## License\n\nThis project is licensed under the [GNU GPL v3.0][license].\n\nMade using the following resources:\n\n| Resource                                  | License                           |\n|:-----------------------------------------:|:---------------------------------:|\n| [Axum example code][axum-examples]        | [MIT][axum-license]               |\n| [TuiCSS \"PC Startup\" demo][pc-startup]    | [MIT][tuicss-license]             |\n| \"Award Medallion BIOS\" design             | [Copyrighted][phoenix]            |\n| [Energy Star logo][energy-star]           | [Trademark][epa]                  |\n| [Raspberry Pi logo][raspberry]            | [Trademark][raspberry-foundation] |\n\n[raspberry]: https://www.raspberrypi.org/\n[raspberry-foundation]: https://www.raspberrypi.org/about/\n[bios]: https://en.wikipedia.org/wiki/BIOS\n[axum]: https://github.com/tokio-rs/axum\n[sysinfo]: https://github.com/GuillaumeGomez/sysinfo\n[sse]: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events\n[tokio]: https://crates.io/crates/tokio\n[askama]: https://crates.io/crates/askama\n[tuicss]: https://github.com/vinibiavatti1/TuiCss\n[tunnel]: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/\n[origin]: https://developers.cloudflare.com/ssl/origin-configuration/origin-ca/\n[postinst]: ./debian/postinst\n[publish]: ./.github/workflows/publish.yml\n[service]: ./debian/rspi-bios.service\n[cargo-deb]: https://github.com/kornelski/cargo-deb\n[cargo-watch]: https://github.com/watchexec/cargo-watch\n[license]: ./LICENSE\n[axum-examples]: https://github.com/tokio-rs/axum/tree/main/examples\n[axum-license]: https://github.com/tokio-rs/axum/blob/main/axum/LICENSE\n[phoenix]: https://www.phoenix.com/\n[pc-startup]: https://github.com/vinibiavatti1/TuiCss/blob/6a021ecc2abb1fbe6da62bd370d1f2a764da1195/examples/pc-startup.html\n[tuicss-license]: https://github.com/vinibiavatti1/TuiCss/blob/6a021ecc2abb1fbe6da62bd370d1f2a764da1195/LICENSE.md\n[energy-star]: https://www.energystar.gov/\n[epa]: https://www.epa.gov/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiotrpdev%2Frspi-bios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpiotrpdev%2Frspi-bios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiotrpdev%2Frspi-bios/lists"}