diff --git a/amplipi/models.py b/amplipi/models.py
index a36be7f53..7c8266c90 100644
--- a/amplipi/models.py
+++ b/amplipi/models.py
@@ -976,7 +976,7 @@ class Info(BaseModel):
mock_ctrl: bool = Field(
default=False, description='Is the controller being mocked? Indicates AmpliPi hardware is not connected')
mock_streams: bool = Field(default=False, description='Are streams being faked? Used for testing.')
- is_streamer: bool = Field(default=False, description='Are we a streamer unit?')
+ is_streamer: bool = Field(default=False, description='Are we a streamer?')
online: bool = Field(default=False, description='can the system connect to the internet?')
latest_release: str = Field(default='unknown', description='Latest software release available from GitHub')
access_key: str = Field(default='', description='session token/API key used for authentication')
diff --git a/amplipi/tests.py b/amplipi/tests.py
index 84b0d3574..26b029bd8 100644
--- a/amplipi/tests.py
+++ b/amplipi/tests.py
@@ -298,7 +298,7 @@ def streamer_test(ap1: Client):
print('Failed to get AmpliPi status.')
sys.exit(1)
if len(status.zones) != 0:
- raise Exception("""Unit has zones. It may not have detected it was a streamer unit.
+ raise Exception("""Unit has zones. It may not have detected it was a streamer.
Do a factory reset and try testing again.""")
print('Test will play Digital 1 Left... Digital 4 Right')
print('- Verify that each side of all 4 sources are played out the corresponding RCA outputs')
diff --git a/docs/amplipi_api.yaml b/docs/amplipi_api.yaml
index 732e4b653..a10700854 100644
--- a/docs/amplipi_api.yaml
+++ b/docs/amplipi_api.yaml
@@ -11226,7 +11226,7 @@ components:
is_streamer:
title: Is Streamer
type: boolean
- description: Are we a streamer unit?
+ description: Are we a streamer?
default: false
online:
title: Online
diff --git a/docs/manual/HOW_TO_WRITE_MANUAL.md b/docs/manual/HOW_TO_WRITE_MANUAL.md
deleted file mode 100644
index cb63e8107..000000000
--- a/docs/manual/HOW_TO_WRITE_MANUAL.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# HOW TO WRITE THE MANUAL
-
-## COMPILING
-In VSCode:
-1. Make sure you have the docker extension installed
-2. On Windows, you'll have to install and open docker desktop, and make sure you have the repo downloded in WSL
-3. Right click on docker-compose.yaml, and select "Compose up"
-4. Wait to see if the manual.pdf compiles. If you're unsure, delete manual.pdf and try again.
-
-Some reasons why compilation might fail:
-- You've used SVGs (the LaTex module that supported SVGs has seemingly been abandoned)
-
-## QR CODES
-When collecting QR codes, follow these steps:
-1. Use this free website: [https://new.express.adobe.com/tools/generate-qr-code](https://new.express.adobe.com/tools/generate-qr-code)
-2. Use default settings, save as a PNG
-3. Use an image editor and set the margins to 1500px wide, leave height alone unless you are adding other things to the QR code (such as appstore logos). The reason you set it so wide is because there's no way to format images in the LaTex compiler and they will always scale up to max width, increasing width makes it so that the height wont be changed (and you won't get half a page of QR code)
diff --git a/docs/manual/MAIN_CONTROLLER_SPECS.md b/docs/manual/MAIN_CONTROLLER_SPECS.md
deleted file mode 100644
index 40766458e..000000000
--- a/docs/manual/MAIN_CONTROLLER_SPECS.md
+++ /dev/null
@@ -1,41 +0,0 @@
-### Specifications
-
-|Feature||
-|:------|:-----|
-|Streaming Sources | Airplay™, Pandora®, Spotify Connect™, DLNA®, Internet Radio, Bluetooth™* |
-|||
-|Control Interfaces| Web App, Mobile App, REST API, Third-Party Software|
-|||
-|Dimensions | 2U 19" rackmount unit, 12.5” L x 19” W x 3.5” H|
-|||
-|Weight | 15 lbs / 6.8 kg |
-|||
-|Connectivity | 100Mbps Ethernet|
-| | 2x USB 2.0|
-|||
-|Power Input | 100-120 VAC or 180-264 VAC, 50-60Hz, Maximum input 782W|
-|||
-|Power Consumption | 6.7W Idle |
-| | 391W Continuous |
-| | 782W Peak |
-|||
-|Peak Current Consumption|6.8A @ 115VAC or 3.4A @230VAC|
-|||
-|Speaker Power | 55 WPC @ 4 Ω |
-| | 32 WPC @ 8 Ω |
-|||
-|Speaker Impedance | 4 - 8 Ω |
-|||
-|Stereo Zones | 6 |
-|||
-|Audio Input | 4 RCA Line In |
-| | Max input level: 2.0 VRMS (6dBV) |
-| | Input Sensitivity: 0.35 VRMS |
-|||
-|Digital Audio Sources | 32-bit 384KHz (Source 1), 16-bit 48KHz (Sources 2, 3, 4)|
-|
-|
-|
-|
-|
-| *\* with third party USB Adapter |
diff --git a/docs/manual/MANUAL.md b/docs/manual/MANUAL.md
deleted file mode 100644
index 30b648ff9..000000000
--- a/docs/manual/MANUAL.md
+++ /dev/null
@@ -1,30 +0,0 @@
-
-[//]: # (This manual can be generated on a linux machine with docker installed with ./scripts/typeset_manual.)
-[//]: # (To generate this on Windows download tex live from www.tug.org/texlive/. Then use the command: latexmk -cd -lualatex -silent amplipi/docs/manual.tex. This manual can also be edited online using overleaf. You will need to updload manual.tex and manual.md as well as the relevant images.)
-
-
-\newpage
-
-
-\newpage
-
-
-
-\newpage
-
-\newpage
-
-
-\newpage
-
-\newpage
-
-
-\newpage
-
-\newpage
-
-
-## Troubleshooting
-
-Much more advanced and updated information can be the found in AmpliPi’s online documentation and question forums found at the end of the Startup and Configuration section.
diff --git a/docs/manual/ZONE_EXPANDER.md b/docs/manual/ZONE_EXPANDER.md
deleted file mode 100644
index e8b43cbc1..000000000
--- a/docs/manual/ZONE_EXPANDER.md
+++ /dev/null
@@ -1,26 +0,0 @@
-## Zone Expander
-Adds 6 output zones to an AmpliPro Controller (often referred to as "AmpliPro Main Unit") and can be daisy chained to create a massive whole-home audio system with up to 36 stereo zone outputs
-
-### Front Panel
-
-
-
-
-- **ON/STANDBY**: Shows the state of the audio controller:
- * Green: The unit is on
- * Red: The unit is on Standby
- * Blinking Red: The unit is waiting to be configured
-- **ZONE**: Shows the power state of each zone
- * Blue: Zone is on (not muted)
- * None: Zone is off (muted)
-
-### Rear Panel
-
-
-
-
-- **PREOUT**: Unamplified zone audio outputs, intended for use with powered speakers/subwoofers.
-- **ZONE X**: Amplified stereo outputs for Zone X, using 4-pin Euroblock connectors.
-- **EXPANSION**:
- * **CHAIN IN**: Connection from previous expansion or main unit.
- * **CHAIN OUT**: Connection to the next expansion unit (if needed)
diff --git a/docs/manual/ZONE_EXPANDER_SPECS.md b/docs/manual/ZONE_EXPANDER_SPECS.md
deleted file mode 100644
index 015c13a8e..000000000
--- a/docs/manual/ZONE_EXPANDER_SPECS.md
+++ /dev/null
@@ -1,24 +0,0 @@
-### Specifications
-
-|Feature||
-|:------|:-----|
-|Dimensions | 2U 19" rackmount unit with 300mm depth, 12.5” L x 19” W x 3.5” H|
-|||
-|Weight | 15 Pounds / 6.8 Kilograms |
-|||
-|Power Input | 100-240VAC 50-60Hz max input 45W|
-|||
-|Power Consumption | 1W Idle|
-| | 391W Continuous|
-| | 782W Peak|
-|||
-|Peak Current Consumption|6.8A @ 115VAC or 3.4A @230VAC|
-|||
-|Speaker Power | 55 WPC @ 4 Ω |
-| | 32 WPC @ 8 Ω |
-|||
-|Speaker Impedance | 4 - 8 Ω |
-|||
-|Stereo Zones | 6 |
-|||
-|Audio Input | From Controller |
diff --git a/docs/manual/docker-compose.yaml b/docs/manual/docker-compose.yaml
deleted file mode 100644
index 7d66e5de3..000000000
--- a/docs/manual/docker-compose.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-# This file allows the manual to be generated with a single click in vscode
-# With the docker extension installed right click on this file and select "Compose Up"
-# The file "manual.pdf" will be generated
-version: '3'
-services:
- app:
- image: witiko/markdown
- container_name: markdown-translator
- command: latexmk -lualatex manual.tex
- restart: no
- working_dir: /docs/manual
- volumes:
- - .:/docs/manual
diff --git a/docs/manual/imgs/back_panel_main.png b/docs/manual/imgs/back_panel_main.png
deleted file mode 100644
index 23d4b0d39..000000000
Binary files a/docs/manual/imgs/back_panel_main.png and /dev/null differ
diff --git a/docs/manual/imgs/front_panel_main.png b/docs/manual/imgs/front_panel_main.png
deleted file mode 100644
index 590ff5dae..000000000
Binary files a/docs/manual/imgs/front_panel_main.png and /dev/null differ
diff --git a/docs/manual/imgs/qr-page.png b/docs/manual/imgs/qr-page.png
deleted file mode 100644
index 4df85331c..000000000
Binary files a/docs/manual/imgs/qr-page.png and /dev/null differ
diff --git a/docs/manual/manual.tex b/docs/manual/manual.tex
deleted file mode 100644
index d08771f79..000000000
--- a/docs/manual/manual.tex
+++ /dev/null
@@ -1,61 +0,0 @@
-\documentclass{article}
-\usepackage{geometry}
- \geometry{
- a4paper,
- total={170mm,257mm},
- left=20mm,
- top=20mm,
- }
-\usepackage{tgheros}
-\usepackage[utf8]{inputenc}
-\usepackage[english]{babel}
-%\usepackage[english]{isodate}
-%\usepackage[parfill]{parskip}
-\usepackage[hybrid]{markdown}
-\markdownSetup{
- pipeTables,
- tableCaptions,
- rendererPrototypes = {
- image = {\begin{center}\setkeys{Gin}{width=.99\linewidth}\includegraphics{#2}\end{center}}, % center images inline expanding to page width
- codeSpan = {\texttt{#1}}, % Render inline code via `\texttt`.'
- }
-}
-\title{ \textbf{AmpliPro Home Audio Controller - User Manual}}
-\date{ \textbf{ Version: 0.3.5}}
-\setlength\parindent{0pt}
-\begin{document}
-
-\maketitle
-\setkeys{Gin}{width=.99\linewidth}
-\includegraphics{ imgs/main_graphic_16x9.jpg}
-\newline
-\newline
-\begin{center}
- \LARGE{ \textbf{ Device Model: AP-S4Z6}}
-\end{center}
-\includegraphics{ imgs/MicroNova_Logo.jpg}
-
-\newpage
-\tableofcontents
-\newpage
-\pagenumbering{arabic}
-
-\markdownInput{LINKS.md}
-\newpage
-\markdownInput{SAFETY.md}
-\newpage
-\markdownInput{FCC.md}
-\newpage
-\markdownInput{OVERVIEW.md}
-\newpage
-\markdownInput{MAIN_CONTROLLER.md}
-\newpage
-\markdownInput{MAIN_CONTROLLER_SPECS.md}
-\newpage
-\markdownInput{INSTALLATION.md}
-\newpage
-\markdownInput{TROUBLESHOOTING.md}
-\newpage
-\markdownInput{WARRANTY.md}
-
-\end{document}
diff --git a/docs/manuals/HOW_TO_WRITE_MANUAL.md b/docs/manuals/HOW_TO_WRITE_MANUAL.md
new file mode 100644
index 000000000..846bfebf7
--- /dev/null
+++ b/docs/manuals/HOW_TO_WRITE_MANUAL.md
@@ -0,0 +1,17 @@
+# HOW TO WRITE THE MANUAL
+
+## COMPILING
+In VSCode:
+1. Make sure you have the docker extension installed
+2. On Windows, you'll have to install and open docker desktop, and make sure you have the repo downloded in WSL
+3. Right click on docker-compose.yaml, and select "Compose up"
+4. Wait to see if the manual.pdf compiles. If you're unsure, delete manual.pdf and try again.
+
+Some reasons why compilation might fail:
+- You've used SVGs (the LaTex module that supported SVGs has seemingly been abandoned)
+- Your files are routed wrong. In VSCode, right click and copy relative path of a given file to get an accurate pathing, then parse down to the proper relative path from where you're at. This is useful to avoid spelling errors, but also remove any differences between windows and linux in filenames.
+
+## QR CODES
+When collecting QR codes, follow these steps:
+1. Use the `qrencode` library in linux/wsl using these parameters: `qrencode {url} -o {filename}.svg -t SVG -s 50`
+2. Use an image editor and add the QR code to the appropriate place on the qr-page.png file. If using Affinity Photo (an editor that we have a license for in onepass), make sure you combine all layers into one and then rasterize+trim that last layer before exporting as a png
diff --git a/docs/manual/BLUETOOTH.md b/docs/manuals/common/BLUETOOTH.md
similarity index 100%
rename from docs/manual/BLUETOOTH.md
rename to docs/manuals/common/BLUETOOTH.md
diff --git a/docs/manual/DEVELOPING.md b/docs/manuals/common/DEVELOPING.md
similarity index 100%
rename from docs/manual/DEVELOPING.md
rename to docs/manuals/common/DEVELOPING.md
diff --git a/docs/manual/EINK_ERROR_CODES.md b/docs/manuals/common/EINK_ERROR_CODES.md
similarity index 100%
rename from docs/manual/EINK_ERROR_CODES.md
rename to docs/manuals/common/EINK_ERROR_CODES.md
diff --git a/docs/manual/FCC.md b/docs/manuals/common/FCC.md
similarity index 100%
rename from docs/manual/FCC.md
rename to docs/manuals/common/FCC.md
diff --git a/docs/manuals/common/GLOSSARY.md b/docs/manuals/common/GLOSSARY.md
new file mode 100644
index 000000000..36e3c62cd
--- /dev/null
+++ b/docs/manuals/common/GLOSSARY.md
@@ -0,0 +1,19 @@
+# Glossary
+
+- App: Refers to the device software, whether the mobile app or the webapp (see installation page for details)
+
+- Firmware: Software that controls the device hardware
+
+- Group: Collection of Zones that can be controlled together as if they were a single zone
+
+- Imaging / Reimaging: The process of restoring the device to factory settings via the micro-usb service port
+
+- Line-Level: Unamplified output
+
+- Source / Stream: Source of audio, such as an RCA or 3.5mm input or an instance of Spotify, Pandora, Internet Radio, etc. Connects to Groups and/or Zones to output the audio and control volume in said Groups/Zones.
+
+- SSH: Secure Shell, a computer protocol used to wirelessly access the device
+
+- Tarball: Type of compressed file with the `.tar` or `.tar.gz` extension. Typically used to store and transfer software packages in Linux.
+
+- Zone: Pair of speakers connected to one of the device's outputs. Can be added or removed from Streams to change what audio is playing to said speakers, and multiple zones can be organized into groups as to be controlled all at once rather than individually.
diff --git a/docs/manual/LINKS.md b/docs/manuals/common/LINKS.md
similarity index 100%
rename from docs/manual/LINKS.md
rename to docs/manuals/common/LINKS.md
diff --git a/docs/manual/PRESETS.md b/docs/manuals/common/PRESETS.md
similarity index 100%
rename from docs/manual/PRESETS.md
rename to docs/manuals/common/PRESETS.md
diff --git a/docs/manual/SAFETY.md b/docs/manuals/common/SAFETY.md
similarity index 100%
rename from docs/manual/SAFETY.md
rename to docs/manuals/common/SAFETY.md
diff --git a/docs/manual/SETUP.md b/docs/manuals/common/SETUP.md
similarity index 100%
rename from docs/manual/SETUP.md
rename to docs/manuals/common/SETUP.md
diff --git a/docs/manual/SPEAKERS.md b/docs/manuals/common/SPEAKERS.md
similarity index 100%
rename from docs/manual/SPEAKERS.md
rename to docs/manuals/common/SPEAKERS.md
diff --git a/docs/manuals/common/SPECS_TITLE.md b/docs/manuals/common/SPECS_TITLE.md
new file mode 100644
index 000000000..a435e6be8
--- /dev/null
+++ b/docs/manuals/common/SPECS_TITLE.md
@@ -0,0 +1 @@
+## Specifications
diff --git a/docs/manual/TROUBLESHOOTING.md b/docs/manuals/common/TROUBLESHOOTING.md
similarity index 62%
rename from docs/manual/TROUBLESHOOTING.md
rename to docs/manuals/common/TROUBLESHOOTING.md
index e9b6d382f..33517b7bf 100644
--- a/docs/manual/TROUBLESHOOTING.md
+++ b/docs/manuals/common/TROUBLESHOOTING.md
@@ -17,10 +17,14 @@ Lack of audio typically has one of a few causes:
## Updating
-From the app:
+From the App
1. Click the gear icon in the bottom right corner to go to the configuration page
2. Select **Updates** and click the **Check for Updates** button
+Without the app:
+1. Collecting the IP from the front display of your AmpliPro unit
+2. Navigating to `http://{Device_IP}:5001/update`
+
### New Release
To update your AmpliPi software to the latest version:
@@ -39,7 +43,7 @@ There are two ways configuration backups are made - manually through the fronten
### Manual backups and restores
-Manual backups are taken by navigating to ⚙ -> Config -> Download Config. This configuration includes all configured streams. These backups can be restored using ⚙ -> Config -> Upload Config. It is a good idea to take a manual backup before upgrading your appliance.
+Manual backups are taken by navigating to Settings (gear icon) $-\textgreater$ Config $-\textgreater$ Download Config. This configuration includes all configured streams. These backups can be restored going to Settings $-\textgreater$ Config $-\textgreater$ Upload Config and selecting the downloaded config file. It is a good idea to take a manual backup before upgrading your appliance.
### Automated system backups and restores
@@ -47,16 +51,37 @@ Automated backups are also taken nightly at 2AM and stored for 90 days, and also
These backups are dated tarballs stored at `/home/pi/backups`. This tarball contains the entire `/home/pi/.config/amplipi` directory. To restore this backup:
1. Stop the AmpliPi service (`systemctl stop --user amplipi` as the `pi` user).
-1. Unpack a backup tarball and overwrite the contents of `.config/amplipi` (something like `tar --force-local -xvzf backups/config_2024-08-22T12:42:31-04:00_pre-fw-upgrade.tgz -C /`). Here we use `config_2024-08-22T12:42:31-04:00_pre-fw-upgrade.tgz` as an example backup file.
-1. Start AmpliPi again (`systemctl start --user amplipi`).`
+2. Unpack a backup tarball and overwrite the contents of `.config/amplipi` (something like `tar --force-local -xvzf backups/config_2024-08-22T12:42:31-04:00_pre-fw-upgrade.tgz -C /`). Here we use `config_2024-08-22T12:42:31-04:00_pre-fw-upgrade.tgz` as an example backup file.
+3. Start AmpliPi again (`systemctl start --user amplipi`).`
## Reimaging AmpliPro
-For directions on how to bring AmpliPro system back to a previous version, scan the QR labeled "Reimaging Instructions" on the links page at the start of this manual, or [click this link](https://github.com/micro-nova/AmpliPi/blob/main/docs/imaging_etcher.md). It is a good idea to take a system backup before running this process; see the above section labelled "Taking and restoring configuration backups".
+For directions on how to bring AmpliPro system back to a previous version, scan the QR on the links page at the start of this manual and select "Reimaging Instructions", or [click this link](https://github.com/micro-nova/AmpliPi/blob/main/docs/imaging_etcher.md). It is a good idea to take a system backup before running this process; see the above section labelled "Taking and restoring configuration backups".
+
+## Error Codes
+The following numerical codes are displayed on the AmpliPro's E-Ink Display on newer models, or on the TFT Display on older models, when the corresponding error occurs:
+
+- 0: E-Ink Display service is running, but the AmpliPi service itself is not
+- 1: Failed to get the IP address for the AmpliPi
+- 10: Cannot connnect to REST API
+- 11: Time out when connecting to REST API
+- 12: Invalid response from REST API
+- 13: Other REST API Error
+- 14: Error Getting Status From File/Another Process
+- 15: Unable to find serial number (Some AmpliPro devices do not have EEPROM boards and therefore do not have internal serial numbers, but these do not have E-Ink Displays)
+- 16: Unable to get number of expander units due to Exception
+- 17: Unable to get number of expander units from API
## Still need help?
You can contact our support. We can be reached via email at [support@micro.nova.com](mailto:support@micro-nova.com).
+### Gathering Logs
+
+In most cases, the first thing that our support technicians will ask you for is to send us your system logs. These logs are wiped out on system reboot unless you set the "log persistence" setting in the admin panel, so when possible try to either collect them whenever an issue occurs _before_ rebooting your device or set log persistence on.
+Logs can be reached by going to Settings -> About -> Logs, or by navigating directly to `http://{Device_IP}:19531/entries`. Once you reach this page, you can either copy and paste the logs into your email, or hit control+S to save them to a file that you can attach to your email.
+
+### Support Tunnel
+
We may ask you to open a support tunnel so we can connect to your running appliance. When you request a tunnel, the web interface will generate and provide you with two pieces of information - the tunnel ID and a preshared key. Without these pieces of information, we are _incapable_ of connecting to your appliance. Additionally, a support tunnel can be stopped at any time and has an expiration date of 2 weeks after it was created. This is for your privacy and security.
You can request a tunnel by following these steps:
diff --git a/docs/manual/WARRANTY.md b/docs/manuals/common/WARRANTY.md
similarity index 100%
rename from docs/manual/WARRANTY.md
rename to docs/manuals/common/WARRANTY.md
diff --git a/docs/manual/WEB_APP.md b/docs/manuals/common/WEB_APP.md
similarity index 100%
rename from docs/manual/WEB_APP.md
rename to docs/manuals/common/WEB_APP.md
diff --git a/docs/manuals/docker-compose.yaml b/docs/manuals/docker-compose.yaml
new file mode 100644
index 000000000..5a0fba76a
--- /dev/null
+++ b/docs/manuals/docker-compose.yaml
@@ -0,0 +1,40 @@
+# This file allows the manual to be generated with a single click in vscode
+# With the docker extension installed right click on this file and select "Compose Up"
+# The file "manual.pdf" will be generated
+version: '3'
+services:
+ main:
+ image: witiko/markdown
+ container_name: markdown-translator-main
+ command: latexmk -lualatex main-manual.tex
+ restart: no
+ working_dir: /docs/manuals
+ volumes:
+ - .:/docs/manuals
+
+ expander:
+ image: witiko/markdown
+ container_name: markdown-translator-expander
+ command: latexmk -lualatex expander-manual.tex
+ restart: no
+ working_dir: /docs/manuals
+ volumes:
+ - .:/docs/manuals
+
+ streamer:
+ image: witiko/markdown
+ container_name: markdown-translator-streamer
+ command: latexmk -lualatex streamer-manual.tex
+ restart: no
+ working_dir: /docs/manuals
+ volumes:
+ - .:/docs/manuals
+
+ # wallpanel:
+ # image: witiko/markdown
+ # container_name: markdown-translator-wallpanel
+ # command: latexmk -lualatex wallpanel-manual.tex
+ # restart: no
+ # working_dir: /docs/manuals
+ # volumes:
+ # - .:/docs/manuals
diff --git a/docs/manuals/expander-manual.tex b/docs/manuals/expander-manual.tex
new file mode 100644
index 000000000..6071b42b6
--- /dev/null
+++ b/docs/manuals/expander-manual.tex
@@ -0,0 +1,80 @@
+\documentclass{article}
+\usepackage{geometry}
+\geometry{
+ a4paper,
+ total={170mm,257mm},
+ left=20mm,
+ top=20mm,
+}
+
+\usepackage[OT1]{fontenc}
+\renewcommand*\familydefault{\sfdefault}
+
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[english]{babel}
+\usepackage[english]{isodate}
+\usepackage[parfill]{parskip}
+\usepackage[hybrid]{markdown}
+
+\usepackage{colortbl}
+\usepackage{array}
+\usepackage{booktabs}
+
+\usepackage{xcolor}
+\definecolor{ampliproblue}{RGB}{0, 77, 255}
+\usepackage{sectsty}
+\sectionfont{\color{ampliproblue}}
+\subsectionfont{\color{ampliproblue}}
+\subsubsectionfont{\color{ampliproblue}}
+
+\markdownSetup{
+ pipeTables,
+ tableCaptions,
+ rendererPrototypes = {
+ image = {\begin{center}\setkeys{Gin}{width=.99\linewidth}\includegraphics{#2}\end{center}}, % center images inline expanding to page width
+ codeSpan = {\texttt{#1}}, % Render inline code via `\texttt`.'
+ }
+}
+\title{
+ \textbf{\raisebox{-0.475em}{\includegraphics[height=1.65em]{imgs/amplipro_nobg.png}} Expansion Unit - User Manual}
+}
+\date{}
+\setlength\parindent{0pt}
+\begin{document}
+
+\maketitle
+\setkeys{Gin}{width=.99\linewidth}
+\includegraphics{ expander/sideview_expansion.png}
+\begin{center}
+ \LARGE{ \textbf{ Device Model: AP1-Z6}}
+\end{center}
+\includegraphics{ imgs/MicroNova_Logo.jpg}
+
+\thispagestyle{empty}
+\newpage
+\thispagestyle{empty}
+\tableofcontents
+\newpage
+\pagenumbering{arabic}
+
+\markdownInput{common/LINKS.md}
+\newpage
+\markdownInput{common/SAFETY.md}
+\newpage
+\markdownInput{common/FCC.md}
+\newpage
+\markdownInput{expander/OVERVIEW.md}
+\newpage
+\markdownInput{common/SPECS_TITLE.md}
+\input{expander/ZONE_EXPANDER_SPECS.tex}
+\newpage
+\markdownInput{expander/INSTALLATION.md}
+\newpage
+\markdownInput{common/TROUBLESHOOTING.md}
+\newpage
+\markdownInput{common/WARRANTY.md}
+\newpage
+\markdownInput{common/GLOSSARY.md}
+
+\end{document}
diff --git a/docs/manuals/expander/INSTALLATION.md b/docs/manuals/expander/INSTALLATION.md
new file mode 100644
index 000000000..4903bec56
--- /dev/null
+++ b/docs/manuals/expander/INSTALLATION.md
@@ -0,0 +1,68 @@
+# Installation
+## Overview
+It's time to upgrade your AmpliPro unit. To avoid damaging the unit, please read through this guide before installing and powering your AmpliPro unit!
+\
+\
+ **WARNING!! VERIFY THAT THE VOLTAGE OF YOUR WALL OUTLET MATCHES THE VOLTAGE LISTED NEAR THE POWER INLET BEFORE PLUGGING IN. IF THE VOLTAGE IS NOT MATCHED, PLEASE CONTACT US AT support@micro-nova.com**
+
+## Mounting and Placement
+
+Main Controllers and Zone Expanders both ship with built-in 19" rackmount ears, so that they can be easily installed into a server rack.
+Both the main and expansion units are approximately 15 pounds (6.8 kilograms)
+
+Some things to keep in mind to avoid overheating the unit:
+- Don't block the vent holes on the side
+- Don't allow dust to build up inside the unit. See cleaning instructions on the safety page for more details.
+
+
+## Speakers
+Each of AmpliPro's zones has two speaker outputs that drive a 4-8 Ohm speaker, using the provided Euroblock connectors. Here is what the basic wiring diagram for a zone looks like:
+
+
+
+AmpliPro's amplifiers are capable of driving 4-8 Ohm speaker loads. Here is what a typical stereo speaker connection, using CL2-rated 14-AWG speaker wire and the Euroblock connectors, looks like:
+
+
+
+To connect a stereo speaker pair using speaker wire:
+
+1. Strip 3-4 inches of the cable jacket, then strip 1/4 inch of insulation from the end of each wire.
+2. Twist the frayed end of each wire.
+3. Please note that the wiring diagram (the image with four green squares wired to two speakers) shows polarity, not necessarily the colors of the wires. Make sure you connect positive to positive and negative to negative while also keeping the left and right channels separated into their own speakers.
+4. Unscrew each set screw to open the contacts, then insert and tighten down each wire one by one. Note that set screws loosen, but should not come out.
+5. To avoid any shorts, make sure that there aren't any stray wire strands.
+6. The speaker set can now be connected to one of the 6 zones.
+
+### Connections
+- Improper connection of speakers can damage the unit
+- Never connect multiple speakers in parallel such that it brings the total impedance below 4 ohms (max 2x 8ohm speakers in parallel).
+- Amplified speaker outputs **CAN NOT** be bridged, attempting to do so will damage the amplifier and void the warranty
+
+### Running wire in walls and ceilings
+- Most electric codes require the use of CL2-rated speaker wires for in-wall installations. Please refer to local building codes for more details.
+- Avoid running speaker wires next to AC power wires as much as possible to reduce noise.
+- When necessary, cross AC wires at 90-degree angles to avoid introducing any noise into the speakers.
+
+### Connecting the Expansion Unit
+
+To connect the expansion unit to the main system, first ensure that all units are disconnected from power. Then, using the included Expansion Data Cable, chain the units together using the chain in/out ports on the back. You can connect one controller and up to 5 expansion units in this fashion.
+
+### More Info
+
+More information on speaker selection and installation can be found in AmpliPro’s community forums that can be reached from the system settings, simply click on "About", then the "Community" link and see the "Installation and Getting Started" topic on our discourse group, also accessible at amplipi.discourse.group.
+
+## Preamp Outputs
+Each of AmpliPro's zone outputs has a corresponding line-level RCA output pair. These outputs can be used to connect powered subwoofers and other active/powered speakers.
+
+The volume output of a preout is controlled by the corresponding speaker output. This allows a connected subwoofer to be controlled proportionally to the speaker's output in the same zone.
+
+## Audio Inputs
+Each of the stereo RCA inputs can be connected to a different audio source, such as the output of a TV or other compatible device. See device specifications page for further information.
+
+## Power
+**WARNING!! VERIFY THAT THE VOLTAGE OF YOUR WALL OUTLET MATCHES THE VOLTAGE LISTED NEAR THE POWER INLET.**
+
+AmpliPro ships preconfigured for the typical mains voltage in your region, either 120V mains power or 230V mains; to see what mode it was set to before shipment, check which hole near the power inlet has a plastic peg/screw. If your unit is preconfigured incorrectly for your region, please contact us at **support@micro-nova.com**
+\
+Once you've ensured that the unit has the correct input voltage configured, plug the expander data cable into the expansion slots of both AmpliPro controller and expansion unit ensure both are plugged into a wall outlet. The ON/STANDBY will start off blinking red and then transition to solid red once the unit is fully powered on. Continue below to enjoy your unit!
+
diff --git a/docs/manuals/expander/OVERVIEW.md b/docs/manuals/expander/OVERVIEW.md
new file mode 100644
index 000000000..aa8f222c8
--- /dev/null
+++ b/docs/manuals/expander/OVERVIEW.md
@@ -0,0 +1,40 @@
+# Overview
+AmpliPro™ is a multi-room/-zone home audio controller and amplifier made for whole-home audio systems with many zones. It can play up to 4 simultaneous audio streams (Airplay™, Pandora®, Spotify Connect™, etc.) or sources (RCA inputs), each routed to one or many zones, all of which are configurable in real-time using the mobile apps (see QR codes on the first page of this manual), self-hosted AmpliPi Web App, or the underlying REST API. It is expandable up to 36 zones using AmpliPro Expanders.
+\
+This manual belongs to one such expansion unit, with it you're able to wire up 6 more zones for use with your main AmpliPro Control Unit.
+\
+\
+Your AmpliPro Expansion Unit includes the following components:
+
+- 1 x Quick Start Guide
+- 1 x AmpliPro Expansion Unit
+- 1 x Expansion Data Cable
+- 1 x Power Cable
+- 6 x 4-pin Euroblock connectors (for speaker connections)
+
+
+## Zone Expander
+Adds 6 output zones to an AmpliPro Controller (often referred to as "AmpliPro Main Unit") and can be daisy chained to create a massive whole-home audio system with up to 36 stereo zone outputs
+
+### Front Panel
+
+
+
+
+- **ON/STANDBY**: Shows the state of the audio controller:
+ - Green: The unit is on
+ - Red: The unit is on Standby
+ - Blinking Red: The unit is waiting to be configured
+- **ZONE**: Shows the power state of each zone
+ - Blue: Zone is on (not muted)
+ - None: Zone is off (muted)
+
+### Rear Panel
+
+
+
+- **PREOUT**: Unamplified zone audio outputs, intended for use with powered speakers/subwoofers.
+- **ZONE X**: Amplified stereo outputs for Zone X, using 4-pin Euroblock connectors.
+- **EXPANSION**:
+ - **CHAIN IN**: Connection from previous expansion or main unit.
+ - **CHAIN OUT**: Connection to the next expansion unit (if needed)
diff --git a/docs/manuals/expander/ZONE_EXPANDER_SPECS.tex b/docs/manuals/expander/ZONE_EXPANDER_SPECS.tex
new file mode 100644
index 000000000..206f81e49
--- /dev/null
+++ b/docs/manuals/expander/ZONE_EXPANDER_SPECS.tex
@@ -0,0 +1,77 @@
+\renewcommand{\arraystretch}{2}
+\rowcolors{2}{gray!25}{white}
+\setlength{\arrayrulewidth}{0.5mm}
+
+\resizebox{\textwidth}{!}{
+ \begin{tabular}{| >{\centering\arraybackslash}m{4cm} | >{\arraybackslash}m{10cm} |}
+ \hline
+ \textbf{Feature} & \textbf{Description} \\
+ \hline
+
+ Dimensions
+ &
+ 2U 19" rackmount unit \newline
+ 12.5” L x 19” W x 3.5” H \\
+
+ \hline
+
+ Weight
+ &
+ 15 lbs / 6.8 kg \\
+
+ \hline
+
+ Power Input
+ &
+ 100-240VAC 50-60Hz max input 45W \\
+
+ \hline
+
+ Power Consumption
+ &
+ 6.7W Idle \newline
+ 391W Continuous \newline
+ 782W Peak \\
+
+ \hline
+
+ Peak Current Consumption
+ &
+ 6.8A @ 115VAC or 3.4A @230VAC \\
+
+ \hline
+
+ Outputs
+ &
+ 4 x Line-Level RCA \newline
+ Ch 1: up to 32-bit 384 kHz \newline
+ Ch 2-4: up to 16-bit 48 kHz \\
+
+ \hline
+
+ Speaker Power
+ &
+ 55 WPC @ 4 Ω \newline
+ 32 WPC @ 8 Ω \\
+
+ \hline
+
+ Speaker Impedance
+ &
+ 4 - 8 Ω \\
+
+ \hline
+
+ Speaker Zones
+ &
+ 6, Expandable up to 36 with AmpliPro Expansion Units\\
+
+ \hline
+
+ Inputs
+ &
+ 1 x Chain In (audio from main unit) \\
+
+ \hline
+ \end{tabular}
+}
diff --git a/docs/manual/imgs/expansion_front_panel.jpg b/docs/manuals/expander/expansion_front_panel.jpg
similarity index 100%
rename from docs/manual/imgs/expansion_front_panel.jpg
rename to docs/manuals/expander/expansion_front_panel.jpg
diff --git a/docs/manual/imgs/expansion_rear_panel.jpg b/docs/manuals/expander/expansion_rear_panel.jpg
similarity index 100%
rename from docs/manual/imgs/expansion_rear_panel.jpg
rename to docs/manuals/expander/expansion_rear_panel.jpg
diff --git a/docs/manuals/expander/sideview_expansion.png b/docs/manuals/expander/sideview_expansion.png
new file mode 100644
index 000000000..881e0b621
Binary files /dev/null and b/docs/manuals/expander/sideview_expansion.png differ
diff --git a/docs/manual/imgs/MicroNova_Logo.jpg b/docs/manuals/imgs/MicroNova_Logo.jpg
similarity index 100%
rename from docs/manual/imgs/MicroNova_Logo.jpg
rename to docs/manuals/imgs/MicroNova_Logo.jpg
diff --git a/docs/manuals/imgs/MicroNova_Logo.png b/docs/manuals/imgs/MicroNova_Logo.png
new file mode 100644
index 000000000..767be8fa8
Binary files /dev/null and b/docs/manuals/imgs/MicroNova_Logo.png differ
diff --git a/docs/manual/imgs/README.md b/docs/manuals/imgs/README.md
similarity index 100%
rename from docs/manual/imgs/README.md
rename to docs/manuals/imgs/README.md
diff --git a/docs/manual/imgs/amplipi-apps-qr.svg b/docs/manuals/imgs/amplipi-apps-qr.svg
similarity index 100%
rename from docs/manual/imgs/amplipi-apps-qr.svg
rename to docs/manuals/imgs/amplipi-apps-qr.svg
diff --git a/docs/manual/imgs/amplipi-qs-vid-qr.svg b/docs/manuals/imgs/amplipi-qs-vid-qr.svg
similarity index 100%
rename from docs/manual/imgs/amplipi-qs-vid-qr.svg
rename to docs/manuals/imgs/amplipi-qs-vid-qr.svg
diff --git a/docs/manuals/imgs/amplipro-blog.svg b/docs/manuals/imgs/amplipro-blog.svg
new file mode 100644
index 000000000..37ae883f1
--- /dev/null
+++ b/docs/manuals/imgs/amplipro-blog.svg
@@ -0,0 +1,337 @@
+
+
+
diff --git a/docs/manuals/imgs/amplipro-community.svg b/docs/manuals/imgs/amplipro-community.svg
new file mode 100644
index 000000000..1f7f646dd
--- /dev/null
+++ b/docs/manuals/imgs/amplipro-community.svg
@@ -0,0 +1,327 @@
+
+
+
diff --git a/docs/manuals/imgs/amplipro_nobg.png b/docs/manuals/imgs/amplipro_nobg.png
new file mode 100644
index 000000000..8ebcefdd8
Binary files /dev/null and b/docs/manuals/imgs/amplipro_nobg.png differ
diff --git a/docs/manuals/imgs/amplipro_nobg.png:Zone.Identifier b/docs/manuals/imgs/amplipro_nobg.png:Zone.Identifier
new file mode 100644
index 000000000..e69de29bb
diff --git a/docs/manual/imgs/euroblock_example.jpg b/docs/manuals/imgs/euroblock_example.jpg
similarity index 100%
rename from docs/manual/imgs/euroblock_example.jpg
rename to docs/manuals/imgs/euroblock_example.jpg
diff --git a/docs/manual/imgs/fcc-logo.png b/docs/manuals/imgs/fcc-logo.png
similarity index 100%
rename from docs/manual/imgs/fcc-logo.png
rename to docs/manuals/imgs/fcc-logo.png
diff --git a/docs/manual/imgs/main_graphic_16x9.jpg b/docs/manuals/imgs/main_graphic_16x9.jpg
similarity index 100%
rename from docs/manual/imgs/main_graphic_16x9.jpg
rename to docs/manuals/imgs/main_graphic_16x9.jpg
diff --git a/docs/manual/imgs/nspanel_home_amplipro.png b/docs/manuals/imgs/nspanel_home_amplipro.png
similarity index 100%
rename from docs/manual/imgs/nspanel_home_amplipro.png
rename to docs/manuals/imgs/nspanel_home_amplipro.png
diff --git a/docs/manuals/imgs/qr-page.png b/docs/manuals/imgs/qr-page.png
new file mode 100644
index 000000000..0f8d92c96
Binary files /dev/null and b/docs/manuals/imgs/qr-page.png differ
diff --git a/docs/manual/imgs/warning.png b/docs/manuals/imgs/warning.png
similarity index 100%
rename from docs/manual/imgs/warning.png
rename to docs/manuals/imgs/warning.png
diff --git a/docs/manual/imgs/webapp_pc.jpg b/docs/manuals/imgs/webapp_pc.jpg
similarity index 100%
rename from docs/manual/imgs/webapp_pc.jpg
rename to docs/manuals/imgs/webapp_pc.jpg
diff --git a/docs/manuals/imgs/webapp_pc.png b/docs/manuals/imgs/webapp_pc.png
new file mode 100644
index 000000000..0fe3337ae
Binary files /dev/null and b/docs/manuals/imgs/webapp_pc.png differ
diff --git a/docs/manual/imgs/webapp_phone.jpg b/docs/manuals/imgs/webapp_phone.jpg
similarity index 100%
rename from docs/manual/imgs/webapp_phone.jpg
rename to docs/manuals/imgs/webapp_phone.jpg
diff --git a/docs/manual/imgs/webapp_phone_and_pc.png b/docs/manuals/imgs/webapp_phone_and_pc.png
similarity index 100%
rename from docs/manual/imgs/webapp_phone_and_pc.png
rename to docs/manuals/imgs/webapp_phone_and_pc.png
diff --git a/docs/manual/imgs/webapp_phone_and_pc_template.png b/docs/manuals/imgs/webapp_phone_and_pc_template.png
similarity index 100%
rename from docs/manual/imgs/webapp_phone_and_pc_template.png
rename to docs/manuals/imgs/webapp_phone_and_pc_template.png
diff --git a/docs/manual/imgs/zone_speaker_wiring.png b/docs/manuals/imgs/zone_speaker_wiring.png
similarity index 100%
rename from docs/manual/imgs/zone_speaker_wiring.png
rename to docs/manuals/imgs/zone_speaker_wiring.png
diff --git a/docs/manuals/main-manual.tex b/docs/manuals/main-manual.tex
new file mode 100644
index 000000000..387e27d91
--- /dev/null
+++ b/docs/manuals/main-manual.tex
@@ -0,0 +1,84 @@
+\documentclass{article}
+\usepackage{geometry}
+\geometry{
+ a4paper,
+ total={170mm,257mm},
+ left=20mm,
+ top=20mm,
+}
+
+\usepackage[OT1]{fontenc}
+\renewcommand*\familydefault{\sfdefault}
+
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[english]{babel}
+\usepackage[english]{isodate}
+\usepackage[parfill]{parskip}
+\usepackage[hybrid]{markdown}
+
+\usepackage{colortbl}
+\usepackage{array}
+\usepackage{booktabs}
+
+\usepackage{xcolor}
+\definecolor{ampliproblue}{RGB}{0, 77, 255}
+\usepackage{sectsty}
+\sectionfont{\color{ampliproblue}}
+\subsectionfont{\color{ampliproblue}}
+\subsubsectionfont{\color{ampliproblue}}
+
+\markdownSetup{
+ pipeTables,
+ tableCaptions,
+ rendererPrototypes = {
+ image = {\begin{center}\setkeys{Gin}{width=.99\linewidth}\includegraphics{#2}\end{center}}, % center images inline expanding to page width
+ codeSpan = {\texttt{#1}}, % Render inline code via `\texttt`.'
+ }
+}
+\title{
+ \textbf{\raisebox{-0.475em}{\includegraphics[height=1.65em]{imgs/amplipro_nobg.png}} Home Audio Controller - User Manual}
+}
+\date{}
+\setlength\parindent{0pt}
+\begin{document}
+
+\maketitle
+\setkeys{Gin}{width=.99\linewidth}
+\includegraphics{ main/AmpliPro-Main-Side.png}
+\newline
+\newline
+\begin{center}
+ \LARGE{ \textbf{ Device Model: AP1-S4Z6}}
+\end{center}
+\includegraphics{ imgs/MicroNova_Logo.png}
+
+\thispagestyle{empty}
+\newpage
+\thispagestyle{empty}
+\tableofcontents
+\newpage
+\pagenumbering{arabic}
+
+\markdownInput{main/LINKS.md}
+\newpage
+\markdownInput{common/SAFETY.md}
+\newpage
+\markdownInput{common/FCC.md}
+\newpage
+\markdownInput{main/OVERVIEW.md}
+\newpage
+\markdownInput{main/MAIN_CONTROLLER.md}
+\newpage
+\markdownInput{common/SPECS_TITLE.md}
+\input{main/MAIN_CONTROLLER_SPECS.tex}
+\newpage
+\markdownInput{main/INSTALLATION.md}
+\newpage
+\markdownInput{common/TROUBLESHOOTING.md}
+\newpage
+\markdownInput{common/WARRANTY.md}
+\newpage
+\markdownInput{common/GLOSSARY.md}
+
+\end{document}
diff --git a/docs/manuals/main/AmpliPro-Main-Back.png b/docs/manuals/main/AmpliPro-Main-Back.png
new file mode 100644
index 000000000..d6ec7ed5a
Binary files /dev/null and b/docs/manuals/main/AmpliPro-Main-Back.png differ
diff --git a/docs/manuals/main/AmpliPro-Main-Front.png b/docs/manuals/main/AmpliPro-Main-Front.png
new file mode 100644
index 000000000..4fd89f50b
Binary files /dev/null and b/docs/manuals/main/AmpliPro-Main-Front.png differ
diff --git a/docs/manuals/main/AmpliPro-Main-Side.png b/docs/manuals/main/AmpliPro-Main-Side.png
new file mode 100644
index 000000000..9c963ef90
Binary files /dev/null and b/docs/manuals/main/AmpliPro-Main-Side.png differ
diff --git a/docs/manual/INSTALLATION.md b/docs/manuals/main/INSTALLATION.md
similarity index 94%
rename from docs/manual/INSTALLATION.md
rename to docs/manuals/main/INSTALLATION.md
index ecba869a1..f6c12c212 100644
--- a/docs/manual/INSTALLATION.md
+++ b/docs/manuals/main/INSTALLATION.md
@@ -73,7 +73,7 @@ Now that the AmpliPro unit is powered on, it's time to use the software. To acce
### Mobile App
-1. We offer mobile apps available on Android and iOS, simply search for "Amplipi" on the Google Play Store or Apple's App Store or go to the Links page at the start of this manual for QR codes for each version
+1. We offer mobile apps available on Android and iOS, simply search for "Amplipi" on the Google Play Store or Apple's App Store or go to the Links page at the start of this manual, scan the QR code, and click "Apps". Otherwise, follow this link on a mobile device: https://www.amplipi.com/app.
2. Once you have the app downloaded, permit the app to access devices on your local network. The app will automatically search your network for active AmpliPro units.
3. If you have multiple controllers, it will ask which unit you wish to connect to. We suggest giving different hostnames to each unit if you have multiple controllers on the same network for this reason.
@@ -82,9 +82,9 @@ Now that the AmpliPro unit is powered on, it's time to use the software. To acce
1. Simply enter "amplipi.local" into a web browser, on any device that both has a web browser and is connected to the same network. Android and Windows 7 users will need to type the IP address found on the unit's display into their web browser instead.
-### From the app:
+### From the App
1. Click the plus (+) icon and select a stream
- The Groove Salad - InternetRadio stream comes preconfigured (needs an internet connection).
2. Change the volume on the zone you would like to output music on. Zones may be hidden inside a group. Click on the different groups to see which zones belong to them.
-3. If you wish to change the default group and zone names or add different streaming sources, click on the gear icon on the bottom right to reach the settings page where you can configure inputs, zones, and groups.
+3. If you wish to change the default zone names or add different streams, click on the gear icon on the bottom right to reach the settings page where you can configure zones and streams.
diff --git a/docs/manuals/main/LINKS.md b/docs/manuals/main/LINKS.md
new file mode 100644
index 000000000..69db18595
--- /dev/null
+++ b/docs/manuals/main/LINKS.md
@@ -0,0 +1,5 @@
+# Links
+Follow this QR code to go to a page that contains links to go to our community forums, developer blog, app downloads, quick-start video, and the newest version of this manual.
+\
+Can't follow the QR? Go to https://www.amplipi.com/main-links.
+
diff --git a/docs/manual/MAIN_CONTROLLER.md b/docs/manuals/main/MAIN_CONTROLLER.md
similarity index 59%
rename from docs/manual/MAIN_CONTROLLER.md
rename to docs/manuals/main/MAIN_CONTROLLER.md
index 32c480929..a4937c159 100644
--- a/docs/manual/MAIN_CONTROLLER.md
+++ b/docs/manuals/main/MAIN_CONTROLLER.md
@@ -1,20 +1,28 @@
## Main Controller
### Front Panel
-
+
-1. **DISPLAY**: Displays IP Address, Hostname, and SSH Password.
-2. **ON/STANDBY**: Displays the state of the audio controller:
+- **DISPLAY**: Displays system information:
+ - Hostname
+ - IP
+ - Device serial number
+ - Current playstate (number of streams playing, paused, and stopped)
+ - SSH Password
+
+\* Note - the display keeps last state when power is lost, this data might not be up do date if the ON/STANDBY light is not on
+
+- **ON/STANDBY**: Displays the state of the audio controller:
- Green: The unit is on
- Red: The unit is on Standby
- - Blinking Red: The unit is updating / booting
-3. **ZONE**: Displays the power state of each zone
+ - Blinking Red: The unit is updating / booting / cannot start the app (see troubleshooting page for details)
+- **ZONE**: Displays the power state of each zone
- Blue: Zone is on (not muted)
- None: Zone is off (muted)
### Rear Panel
-
+
- **POWER**: 115V, or optionally 230V connection. See the installation page for more details.
- **CONTROLLER**:
diff --git a/docs/manuals/main/MAIN_CONTROLLER_SPECS.tex b/docs/manuals/main/MAIN_CONTROLLER_SPECS.tex
new file mode 100644
index 000000000..6d4f0fbb7
--- /dev/null
+++ b/docs/manuals/main/MAIN_CONTROLLER_SPECS.tex
@@ -0,0 +1,113 @@
+\renewcommand{\arraystretch}{2}
+\rowcolors{2}{gray!25}{white}
+\setlength{\arrayrulewidth}{0.5mm}
+
+\resizebox{\textwidth}{!}{
+ \begin{tabular}{| >{\centering\arraybackslash}m{4cm} | >{\arraybackslash}m{10cm} |}
+ \hline
+ \textbf{Feature} & \textbf{Description} \\
+ \hline
+
+ Streaming Sources
+ &
+ Airplay\texttrademark 1 \& 2, Pandora\textregistered, Spotify Connect\texttrademark,\newline
+ DLNA\textregistered, Lyrion Media Server (LMS), Internet Radio,\newline
+ FM Radio*, Bluetooth\texttrademark*, Local Media Playback \\
+
+ \hline
+
+ Control Interfaces
+ &
+ Web App, Mobile App, REST API, Third-Party Drivers \\
+
+ \hline
+
+ Dimensions
+ &
+ 2U 19" rackmount unit \newline
+ 12.5” L x 19” W x 3.5” H \\
+
+ \hline
+
+ Weight
+ &
+ 15 lbs / 6.8 kg \\
+
+ \hline
+
+ Connectivity
+ &
+ 100Mbps Ethernet\\
+
+ \hline
+
+ Power Input
+ &
+ 100-120 VAC or 180-264 VAC, 50-60Hz, Maximum input 782W \\
+
+ \hline
+
+ Power Consumption
+ &
+ 6.7W Idle \newline
+ 391W Continuous \newline
+ 782W Peak \\
+
+ \hline
+
+ Peak Current Consumption
+ &
+ 6.8A @ 115VAC or 3.4A @230VAC \\
+
+ \hline
+
+ Outputs
+ &
+ 4 x Line-Level RCA \newline
+ Ch 1: up to 32-bit 384 kHz \newline
+ Ch 2-4: up to 16-bit 48 kHz \\
+
+ \hline
+
+ Speaker Power
+ &
+ 55 WPC @ 4 Ω \newline
+ 32 WPC @ 8 Ω \\
+
+ \hline
+
+ Speaker Impedance
+ &
+ 4 - 8 Ω \\
+
+ \hline
+
+ Speaker Zones
+ &
+ 6, Expandable up to 36 with AmpliPro Expansion Units\\
+
+ \hline
+
+ Inputs
+ &
+ 4 x RCA Line In \newline
+ - Max input level: 2.0 VRMS (6dBV) \newline
+ - Input Sensitivity: 0.35 VRMS \newline
+ 2 x External USB 2.0** \newline
+ 1 x Internal USB 2.0** \newline
+ 1 x 3.5mm Audio Input \\
+
+ \hline
+
+ Digital Audio Sources
+ &
+ 32-bit 384KHz (Source 1), 16-bit 48KHz (Sources 2, 3, 4) \\
+
+ \hline
+ \end{tabular}
+}
+\\
+\\
+*With third-party hardware
+\\
+**Powered, max draw 0.5 A
diff --git a/docs/manual/OVERVIEW.md b/docs/manuals/main/OVERVIEW.md
similarity index 92%
rename from docs/manual/OVERVIEW.md
rename to docs/manuals/main/OVERVIEW.md
index 048e95013..8cb7d4def 100644
--- a/docs/manual/OVERVIEW.md
+++ b/docs/manuals/main/OVERVIEW.md
@@ -22,4 +22,4 @@ The following optional accessories are available and can be purchased separately
AmpliPro hosts a web app (referred to as "AmpliPi") that can control the system from any PC or mobile phone on the local network. It is designed with the idea that each of the four audio sources could be controlled separately by different people in the house.
\
\
-There is also a downloadable app for iOS and Android devices, simply search for "AmpliPi" on your respective app distributor, or scan the proper QR code for your device on the Links page at the start of this manual
+There is also a downloadable app for iOS and Android devices, simply search for "AmpliPi" on your respective app distributor, or scan the proper QR code for your device on the Links page at the start of this manual, scan the QR code, and click "Apps". Otherwise, follow this link on a mobile device: https://www.amplipi.com/app.
diff --git a/docs/manuals/main/main-links.svg b/docs/manuals/main/main-links.svg
new file mode 100644
index 000000000..6d7b9332e
--- /dev/null
+++ b/docs/manuals/main/main-links.svg
@@ -0,0 +1,335 @@
+
+
+
diff --git a/docs/manuals/main/qr-page.png b/docs/manuals/main/qr-page.png
new file mode 100644
index 000000000..c786f59f1
Binary files /dev/null and b/docs/manuals/main/qr-page.png differ
diff --git a/docs/manuals/streamer-manual.tex b/docs/manuals/streamer-manual.tex
new file mode 100644
index 000000000..085365ab3
--- /dev/null
+++ b/docs/manuals/streamer-manual.tex
@@ -0,0 +1,82 @@
+\documentclass{article}
+\usepackage{geometry}
+\geometry{
+ a4paper,
+ total={170mm,257mm},
+ left=20mm,
+ top=20mm,
+}
+
+\usepackage[OT1]{fontenc}
+\renewcommand*\familydefault{\sfdefault}
+
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage[english]{babel}
+\usepackage[english]{isodate}
+\usepackage[parfill]{parskip}
+\usepackage[hybrid]{markdown}
+
+\usepackage{colortbl}
+\usepackage{array}
+\usepackage{booktabs}
+
+\usepackage{xcolor}
+\definecolor{headerblue}{RGB}{0, 79, 175}
+\usepackage{sectsty}
+\sectionfont{\color{headerblue}}
+\subsectionfont{\color{headerblue}}
+\subsubsectionfont{\color{headerblue}}
+
+\markdownSetup{
+ pipeTables,
+ tableCaptions,
+ rendererPrototypes = {
+ image = {\begin{center}\setkeys{Gin}{width=.99\linewidth}\includegraphics{#2}\end{center}}, % center images inline expanding to page width
+ codeSpan = {\texttt{#1}}, % Render inline code via `\texttt`.'
+ }
+}
+\title{
+ \textbf{\raisebox{-0.475em}{\includegraphics[height=1.65em]{imgs/amplipro_nobg.png}} Streamer - User Manual}
+}
+\date{}
+\setlength\parindent{0pt}
+\begin{document}
+
+\maketitle
+\setkeys{Gin}{width=.99\linewidth}
+\includegraphics{streamer/AmpliPro_streamer_front_angled.png}
+\newline
+\newline
+\begin{center}
+ \LARGE{ \textbf{ Device Model: AP1-S4}}
+\end{center}
+\includegraphics{streamer/MicroNova_Logo.png}
+
+\thispagestyle{empty}
+\newpage
+\thispagestyle{empty}
+\tableofcontents
+\newpage
+\pagenumbering{arabic}
+
+\markdownInput{streamer/LINKS.md}
+\newpage
+\markdownInput{common/SAFETY.md}
+\newpage
+\markdownInput{common/FCC.md}
+\newpage
+\markdownInput{streamer/OVERVIEW.md}
+\newpage
+\markdownInput{common/SPECS_TITLE.md}
+\input{streamer/STREAMER_SPECS.tex}
+\newpage
+\markdownInput{streamer/INSTALLATION.md}
+\newpage
+\markdownInput{streamer/TROUBLESHOOTING.md}
+\newpage
+\markdownInput{common/WARRANTY.md}
+\newpage
+\markdownInput{streamer/GLOSSARY.md}
+
+\end{document}
diff --git a/docs/manuals/streamer/AmpliPro_streamer_back_no_bg.png b/docs/manuals/streamer/AmpliPro_streamer_back_no_bg.png
new file mode 100644
index 000000000..53f9a14bd
Binary files /dev/null and b/docs/manuals/streamer/AmpliPro_streamer_back_no_bg.png differ
diff --git a/docs/manuals/streamer/AmpliPro_streamer_front_angled.png b/docs/manuals/streamer/AmpliPro_streamer_front_angled.png
new file mode 100644
index 000000000..ec2566ba2
Binary files /dev/null and b/docs/manuals/streamer/AmpliPro_streamer_front_angled.png differ
diff --git a/docs/manuals/streamer/AmpliPro_streamer_front_no_bg.png b/docs/manuals/streamer/AmpliPro_streamer_front_no_bg.png
new file mode 100644
index 000000000..182f00485
Binary files /dev/null and b/docs/manuals/streamer/AmpliPro_streamer_front_no_bg.png differ
diff --git a/docs/manuals/streamer/GLOSSARY.md b/docs/manuals/streamer/GLOSSARY.md
new file mode 100644
index 000000000..cabf3ea07
--- /dev/null
+++ b/docs/manuals/streamer/GLOSSARY.md
@@ -0,0 +1,16 @@
+# Glossary
+
+- App: Refers to the device software, whether the mobile app or the webapp (see installation page for details)
+
+- Firmware: Software that controls the device hardware
+
+- Imaging / Reimaging: The process of restoring the device to factory settings via the micro-usb service port
+
+- Line-Level: Unamplified output
+
+- Source / Stream: Source of audio, such as an RCA or 3.5mm input or an instance of Spotify, Pandora, Internet Radio, etc.
+
+- SSH: Secure Shell, a computer protocol used to wirelessly access the device
+
+- Tarball: Type of compressed file, typically used to transfer software packages in Linux
+
diff --git a/docs/manuals/streamer/INSTALLATION.md b/docs/manuals/streamer/INSTALLATION.md
new file mode 100644
index 000000000..c83a88587
--- /dev/null
+++ b/docs/manuals/streamer/INSTALLATION.md
@@ -0,0 +1,47 @@
+# Installation
+## Overview
+It's time to power on your AmpliPro Streamer and try it out. To avoid damaging your device, please read through this guide before installing and powering your AmpliPro Streamer!
+
+## Mounting and Placement
+
+AmpliPro Streamer ships with built-in 19" rackmount ears, so that they can be easily installed into a server rack. Also included are four silicone "feet" if you prefer to run the Streamer from a shelf.
+The weight of the device is approximately 5 pounds (2.3 kilograms)
+
+Some things to keep in mind to avoid overheating your Streamer:
+- Don't block the vent holes on the side
+- Don't allow dust to build up inside the unit. See cleaning instructions on the safety page for more details.
+
+
+## Speakers and Amplifiers
+Each of your Streamer's sources outputs as a line-level RCA output pair. These outputs can be used to connect to amplifiers, powered subwoofers, and other active/powered speakers. Unlike with a standard edition AmpliPro, there are no in-app volume controls; volume is intended to be controlled by whatever amplifier or powered speaker solution you choose.
+
+### More Info
+
+More information on installation can be found on the [AmpliPro community forums](https://www.amplipi.com/community) or our [main website](https://www.amplipro.com). These links can also be found on the "About" page in your system's settings, or on the links page reached via the QR code at the start of this manual.
+
+
+## Power
+
+Plug the AmpliPro Streamer into a wall outlet. The ON/STANDBY will turn solid blue once the unit is fully powered on. Continue below to enjoy your unit!
+
+## Startup and Configuration
+Now that the AmpliPro Streamer is powered on, it's time to use the software. To access the app, there are two options:
+
+### Mobile App
+
+1. We offer mobile apps available on Android and iOS, simply search for "Amplipi" on the Google Play Store or Apple's App Store or go to the Links page at the start of this manual, scan the QR code, and click "Apps". Otherwise, follow this link on a mobile device: https://www.amplipi.com/app.
+2. Once you have the app downloaded, permit the app to access devices on your local network. The app will automatically search your network for active AmpliPro units.
+3. If you have multiple controllers (main units or streamers), it will ask which unit you wish to connect to. We suggest giving different hostnames to each unit if you have multiple controllers on the same network for this reason.
+
+### Webapp
+
+Simply enter "amplipi.local" into a web browser, on any device that both has a web browser and is connected to the same network. Android and Windows 7 users will need to type the IP address found on the unit's display into their web browser instead.
+
+### From the App
+
+Here, we give a basic rundown of the app. For more detail, please refer to our blog by scanning the QR code at the start of the manual or by going to https://www.amplipi.com/blog where you can find more detailed articles on how to use the app or use third-party integrations such as Nice (formerly ELAN) and more.
+
+1. Click the plus (+) icon and select a stream
+ - The Groove Salad - InternetRadio stream comes preconfigured (needs an internet connection).
+2. Click on the record/disc icon at the bottom of the screen to enter the player view, which has more controls depending on the stream type.
+3. If you wish to change the default group and zone names or add different streaming sources, click on the gear icon on the bottom right to reach the settings page where you can configure inputs and zones.
diff --git a/docs/manuals/streamer/LINKS.md b/docs/manuals/streamer/LINKS.md
new file mode 100644
index 000000000..767fe99d4
--- /dev/null
+++ b/docs/manuals/streamer/LINKS.md
@@ -0,0 +1,5 @@
+# Links
+Follow this QR code to go to a page that contains links to go to our community forums, developer blog, app downloads, quick-start video, and the newest version of this manual.
+\
+Can't follow the QR? Go to https://www.amplipi.com/streamer-links.
+
diff --git a/docs/manuals/streamer/MicroNova_Logo.png b/docs/manuals/streamer/MicroNova_Logo.png
new file mode 100644
index 000000000..571e49817
Binary files /dev/null and b/docs/manuals/streamer/MicroNova_Logo.png differ
diff --git a/docs/manuals/streamer/OVERVIEW.md b/docs/manuals/streamer/OVERVIEW.md
new file mode 100644
index 000000000..3b5572be2
--- /dev/null
+++ b/docs/manuals/streamer/OVERVIEW.md
@@ -0,0 +1,38 @@
+# Overview
+The AmpliPro Streamer (sometimes referred to as "the unit" or "the device" by this manual) is a multi-source home audio controller made for whole-home audio systems with many zones, specifically designed to be compatible with preexisting setups. It can play up to 4 simultaneous audio streams (Airplay™, Pandora®, Spotify Connect™, etc.) with each routed to one of the outputs, all of which are configurable in real-time using the mobile apps (see QR codes on the first page of this manual), self-hosted AmpliPi Web App, or the underlying REST API. There are also third party drivers available, used by system integrators to interface AmpliPro directly with other systems, such as Nice (formerly ELAN), URC, and Home Assistant to name a few.
+\
+\
+Your AmpliPro Streamer includes the following components:
+
+- 1 x Quick Start Guide
+- 1 x AmpliPro Streamer
+- 1 x Power Cable
+- 1 x Ethernet Cable
+
+### Front Panel
+
+
+
+- **DISPLAY**: Displays system information:
+ - Hostname
+ - IP
+ - Device serial number
+ - Current playstate\* (number of connected streams that are playing, paused, or stopped)
+ - SSH password
+
+\* Note - the display keeps last state when power is lost, this data might not be up do date if the ON/STANDBY light is not on
+
+- **ON/STANDBY**: Shows the state of the audio controller:
+ - Solid: The unit is on
+ - Blinking: The unit has an issue. See Troubleshooting page for guide on how to receive support.
+
+### Rear Panel
+
+
+
+
+- **OUTPUT**: Zone pre-amp analog L/R audio outputs
+- **SERVICE**: Micro USB service port, used for troubleshooting and reimaging the device
+- **USB**: 2 x USB 2.0 ports, to be used with bluetooth or FM radio dongles, or for an external storage device that contains music files
+- **AUX IN**: 3.5mm stereo audio input
+- **NETWORK**: RJ-45 port for wired ethernet networking
diff --git a/docs/manuals/streamer/STREAMER_SPECS.tex b/docs/manuals/streamer/STREAMER_SPECS.tex
new file mode 100644
index 000000000..90783e827
--- /dev/null
+++ b/docs/manuals/streamer/STREAMER_SPECS.tex
@@ -0,0 +1,78 @@
+\renewcommand{\arraystretch}{2}
+\rowcolors{2}{gray!25}{white}
+\setlength{\arrayrulewidth}{0.5mm}
+
+\resizebox{\textwidth}{!}{
+ \begin{tabular}{| >{\centering\arraybackslash}m{4cm} | >{\arraybackslash}m{10cm} |}
+ \hline
+ \textbf{Feature} & \textbf{Description} \\
+ \hline
+
+ Streaming Sources
+ &
+ Airplay\texttrademark 1 \& 2, Pandora\textregistered, Spotify Connect\texttrademark,\newline
+ DLNA\textregistered, Lyrion Media Server (LMS), Internet Radio,\newline
+ FM Radio*, Bluetooth\texttrademark*, Local Media Playback \\
+
+ \hline
+
+ Control Interfaces
+ &
+ iOS App, Android App, Web App, REST API, Third-Party Drivers \\
+
+ \hline
+
+ Dimensions
+ &
+ 1U 19" rackmount \newline
+ 6" D x 19" W x 1.75" H \\
+
+ \hline
+
+ Weight
+ &
+ 5 lbs / 2.3 kg \\
+
+ \hline
+
+ Connectivity
+ &
+ 100Mbps Ethernet \\
+
+ \hline
+
+ Power Input
+ &
+ IEC 60320 C14 Inlet 100-240VAC 50-60Hz \\
+
+ \hline
+
+ Power Consumption
+ &
+ 5W Average \newline
+ 45W Peak \\
+
+ \hline
+
+ Outputs
+ &
+ 4 x Line-Level RCA \newline
+ Ch 1: up to 32-bit 384 kHz \newline
+ Ch 2-4: up to 16-bit 48 kHz \\
+
+ \hline
+
+ Inputs
+ &
+ 2 x External USB 2.0** \newline
+ 1 x Internal USB 2.0** \newline
+ 1 x 3.5mm Audio Input \\
+
+ \hline
+ \end{tabular}
+}
+\\
+\\
+*With third-party hardware
+\\
+**Powered, max draw 0.5 A
diff --git a/docs/manuals/streamer/TROUBLESHOOTING.md b/docs/manuals/streamer/TROUBLESHOOTING.md
new file mode 100644
index 000000000..ea08a8fda
--- /dev/null
+++ b/docs/manuals/streamer/TROUBLESHOOTING.md
@@ -0,0 +1,79 @@
+# Troubleshooting
+
+If you are having problems with your AmpliPro device, start here.
+
+## Updating
+
+From the App
+1. Click the gear icon in the bottom right corner to go to the configuration page
+2. Select **Updates** and click the **Check for Updates** button
+
+Without the app:
+1. Collecting the IP from the front display of your AmpliPro unit
+2. Navigating to `http://{Device_IP}:5001/update`
+
+### New Release
+To update your AmpliPi software to the latest version:
+
+3. Click the **Update** button
+
+### Prereleases and using previous versions
+Had an issue with an update? Want to try a beta release? Follow these steps:
+
+3. Click the **Older Releases** tab
+4. Select the release you would like to use from the dropdown menu
+5. Click the **Start Update** button
+
+## Taking and restoring configuration backups
+
+There are two ways configuration backups are made - manually through the frontend, and nightly within the backend via a scheduled job.
+
+### Manual backups and restores
+
+Manual backups are taken by navigating to Settings (gear icon) $-\textgreater$ Config $-\textgreater$ Download Config. This configuration includes all configured streams. These backups can be restored going to Settings $-\textgreater$ Config $-\textgreater$ Upload Config and selecting the downloaded config file. It is a good idea to take a manual backup before upgrading your appliance.
+
+### Automated system backups and restores
+
+Automated backups are also taken nightly at 2AM and stored for 90 days, and also whenever you upgrade to a newer version of software. These are raw system backups, accessible only by an advanced user via the backend. These backups help either support, or a technical user, to restore prior system configuration from a particular point in time. If the below instructions do not make sense to you, you should feel free to email [support@micro-nova.com](mailto:support@micro-nova.com) and we can help restore a backup from your appliance.
+
+These backups are dated tarballs stored at `/home/pi/backups`. This tarball contains the entire `/home/pi/.config/amplipi` directory. To restore this backup:
+1. Stop the AmpliPi service (`systemctl stop --user amplipi` as the `pi` user).
+2. Unpack a backup tarball and overwrite the contents of `.config/amplipi` (something like `tar --force-local -xvzf backups/config_2024-08-22T12:42:31-04:00_pre-fw-upgrade.tgz -C /`). Here we use `config_2024-08-22T12:42:31-04:00_pre-fw-upgrade.tgz` as an example backup file.
+3. Start AmpliPi again (`systemctl start --user amplipi`).`
+
+## Reimaging AmpliPro
+For directions on how to bring AmpliPro system back to a previous version, follow this link: www.amplipi.com/reimaging. It is a good idea to take a system backup before running this process; see the above section labelled "Taking and restoring configuration backups".
+
+## Error Codes
+The following numerical codes are displayed on the AmpliPro's E-Ink Display on newer models, or on the TFT Display on older models, when the corresponding error occurs:
+
+- 0: E-Ink Display service is running, but the AmpliPi service itself is not
+- 1: Failed to get the IP address for the AmpliPi
+- 10: Cannot connnect to REST API
+- 11: Time out when connecting to REST API
+- 12: Invalid response from REST API
+- 13: Other REST API Error
+- 14: Error Getting Status From File/Another Process
+- 15: Unable to find serial number (Some AmpliPro devices do not have EEPROM boards and therefore do not have internal serial numbers, but these do not have E-Ink Displays)
+- 16: Unable to get number of expander units due to Exception
+- 17: Unable to get number of expander units from API
+
+## Still need help?
+
+You can contact our support. We can be reached via email at [support@micro.nova.com](mailto:support@micro-nova.com).
+
+### Gathering Logs
+
+In most cases, the first thing that our support technicians will ask you for is to send us your system logs. These logs are wiped out on system reboot unless you set the "log persistence" setting in the admin panel, so when possible try to either collect them whenever an issue occurs _before_ rebooting your device or set log persistence on.
+Logs can be reached by going to Settings -> About -> Logs, or by navigating directly to `http://{Device_IP}:19531/entries`. Once you reach this page, you can either copy and paste the logs into your email, or hit control+S to save them to a file that you can attach to your email.
+
+### Support Tunnel
+
+We may ask you to open a support tunnel so we can connect to your running appliance. When you request a tunnel, the web interface will generate and provide you with two pieces of information - the tunnel ID and a preshared key. Without these pieces of information, we are _incapable_ of connecting to your appliance. Additionally, a support tunnel can be stopped at any time and has an expiration date of 2 weeks after it was created. This is for your privacy and security.
+
+You can request a tunnel by following these steps:
+
+1. Click the gear icon in the bottom right corner to go to the configuration page
+2. Select **Updates**, and click the **Support Tunnel** Tab
+3. Click the **Request support tunnel** button. It may 60 seconds for the request to complete.
+4. Once the request has been created, this page provides you with the tunnel ID and a preshared key. Please provide both of these to our support personnel in your communications.
diff --git a/docs/manuals/streamer/qr-page.png b/docs/manuals/streamer/qr-page.png
new file mode 100644
index 000000000..7129eaed2
Binary files /dev/null and b/docs/manuals/streamer/qr-page.png differ
diff --git a/docs/manuals/streamer/streamer-links.svg b/docs/manuals/streamer/streamer-links.svg
new file mode 100644
index 000000000..b687a85cd
--- /dev/null
+++ b/docs/manuals/streamer/streamer-links.svg
@@ -0,0 +1,333 @@
+
+
+
diff --git a/docs/manual/WALL_PANEL.md b/docs/manuals/wallpanel/WALL_PANEL.md
similarity index 100%
rename from docs/manual/WALL_PANEL.md
rename to docs/manuals/wallpanel/WALL_PANEL.md