ReflectOS is the approachable, configurable, and extensible OS for your Raspberry Pi smart mirror project. It is designed to allow anyone to easily install, customize, and enjoy a smart mirror/display - no coding or command line usage required!
This repo contains the system firmware which is flashed to a MicroSD card for your Raspberry Pi. It is optimized to work with the Vilros Magic Mirror v4, but you can build your own as well! See more project ideas, information, and setup guides in the official documentation.
.img
file for your Raspberry Pi from the latest release. See the official documentation for details
on compatibility.For a more detailed guide and lots more information on ReflectOS, please checkout the official documentation.
fwup
Users familiar with the fwup tool
will recognize that each release also contains .fw
builds. These can be used with fwup
to install
and update ReflectOS on your MicroSD card.
For example, for a fresh install of ReflectOS on Raspberry Pi 3:
fwup -a -i ReflectOS-firmware-rpi3.fw -t complete
To update an existing installation with a new firmware (note the -t upgrade
option):
fwup -a -i ReflectOS-firmware-rpi3.fw -t upgrade
Contributions are welcome for this project! You can open an issue to report a bug or request a feature enhancement. Code contributions are also welcomed, and can be submitted by forking this repository and creating a pull request.
If you are interested in building your own extensions for ReflectOS, please see the documentation for the ReflectOS Kernel library.
ReflectOS is built on the amazing Nerves Project, an open source platform for building embedded system using Elixir. See details below for getting started developing on the firmware.
The Nerves project maintains excellent documentation, and contains the basics of what you'll need to get started developing ReflectOS.
You can find the instructions here in the Official Nerves Docs.
ReflectOS uses the Scenic package for rendering native UIs, and you'll likely need a few additional dependencies to get that running locally. You can find detailed instructions in the Scenic Docs.
Once you have all the dependencies for Nerves and Scenic installed, you can follow the instructions below to get ReflectOS running locally.
Nerves applications produce images for hardware targets based on the
MIX_TARGET
environment variable. If MIX_TARGET
is unset, mix
builds an
image that runs on the host (e.g., your laptop). This is useful for executing
logic tests, running utilities, and debugging. Other targets are represented by
a short name like rpi3
that maps to a Nerves system image for that platform.
All of this logic is in the generated mix.exs
and may be customized. For more
information about targets see:
https://hexdocs.pm/nerves/supported-targets.html
To start developing locally:
mix deps.get
iex -S mix
to start the applicationTo start your Nerves app:
export MIX_TARGET=my_target
or prefix every command with
MIX_TARGET=my_target
. For example, MIX_TARGET=rpi3
mix deps.get
mix firmware
mix burn