diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..32913d36706d90a35cb57eddbd6b9ba793c1f115
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+# balloon-tx-monolith
+
+This is software designed to run on a Raspberry Pi 4. It takes images and video and sends it to a daughterboard, which should be running [pi-transceiver-firmware](https://gitlab.scd31.com/stephen/pi-transceiver-firmware). For more information, see [this article](https://www.scd31.com/posts/high-speed-balloon-comms).
+
+## Installing
+
+First, install Rustup: https://rustup.rs/
+
+After that is installed, restart your terminal, or open a new one.
+
+### Install SSDV
+
+```bash
+git clone https://github.com/fsphil/ssdv
+cd ssdv
+make
+sudo make install
+```
+
+### Configuring System
+
+```bash
+sudo raspi-config
+```
+
+In interface options, make sure legacy camera support is disabled. Also make sure SPI is enabled. Afterwards, reboot with `sudo reboot`
+
+### Install pre-reqs for building
+
+```bash
+cargo install cargo-deb
+```
+
+### Build and install
+
+Run these in the directory of wherever you downloaded `balloon-tx-monolith` to.
+
+```bash
+cargo deb
+sudo dpkg -i target/debian/*.deb
+```
+
+### Configuring monolith
+
+Edit `/etc/balloon_tx/config.toml`. You'll almost certainly want to comment out everything under `[control]`. Make sure to update the callsign. If you have any image paths (i.e. static images you want sent down), put them in `paths`. Otherwise, set `paths = []` so that it doesn't try to look for any.
+
+### Running
+
+```bash
+sudo systemctl start balloon_tx
+sudo systemctl enable balloon_tx
+```
+
+The first command will start the monolith right now. The second command will make it automatically start at boot.