You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add full Linux support and an interactive --hotspot mode to the one-line base-station installer; keep macOS support. The installer now bootstraps git and Docker on Debian/Ubuntu/Raspberry Pi OS, can enable a NetworkManager-based Wi‑Fi AP (wfr-hotspot) and installs a systemd unit for it. CI workflow updated to validate compose from the repo root and run a linux e2e job that syntax-checks the script, validates compose, runs the installer, asserts core containers, checks service ports, verifies idempotency, and ensures non-interactive hotspot behaviour. Documentation (README and MACBOOK_DEPLOY.md) and WHICH_ONE.md updated with Linux/RPi instructions and hotspot notes. Fix .env macbook DBC_HOST_PATH to be repo-root relative and add wfr-hotspot.service file.
Copy file name to clipboardExpand all lines: README.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,10 +6,14 @@
6
6
7
7
Comprehensive telemetry and data acquisition system for real-time monitoring of formula racing vehicle performance. This system captures CAN bus data from the vehicle, transmits it to a base station, and visualizes it through an interactive web dashboard.
8
8
9
-
> 🚀 **Quick Start — macOS Base Station**
9
+
> 🚀 **Quick Start — Base Station (macOS or Linux)**
Copy file name to clipboardExpand all lines: universal-telemetry-software/deploy/MACBOOK_DEPLOY.md
+59-11Lines changed: 59 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,34 +1,45 @@
1
-
# MacBook Base Station Setup
1
+
# Base Station Setup (macOS / Linux)
2
2
3
-
Local telemetry stack for a MacBook base station. The default startup is minimal:
3
+
Local telemetry stack for a MacBook or Linux base station (including Raspberry Pi 4B). The default startup is minimal:
4
4
telemetry receiver, Redis, and the Pecan dashboard.
5
5
6
6
TimescaleDB writes, local media services, and the Cloudflare tunnel are opt-in
7
7
Docker Compose profiles.
8
8
9
9
## Prerequisites
10
10
11
-
-[Docker Desktop](https://www.docker.com/products/docker-desktop/) installed and running
12
-
- Car RPi on the same network, or use simulation mode
11
+
**macOS:**[Docker Desktop](https://www.docker.com/products/docker-desktop/) installed and running.
12
+
13
+
**Linux / Raspberry Pi 4B:** Nothing pre-installed — the installer bootstraps git and Docker Engine automatically. Requires Debian/Ubuntu or Raspberry Pi OS (apt-get).
14
+
15
+
Car RPi on the same network, or use simulation mode.
13
16
14
17
---
15
18
16
19
## One-Command Install (Recommended)
17
20
18
-
**Requires macOS + Docker Desktop (one-time install from docker.com).**
2. Clones the repo to `~/wfr-base-station/` (or updates if already present)
27
-
3. Pulls the latest images
28
-
4. Starts the stack
32
+
1.**macOS:** Verifies Docker Desktop is running
33
+
2.**Linux:** Installs git and Docker Engine if missing, enables Docker on boot
34
+
3. Clones the repo to `~/wfr-base-station/` (or updates if already present)
35
+
4. Pulls the latest images
36
+
5. Starts the stack (auto-restarts on reboot via `restart: unless-stopped`)
37
+
6.**`--hotspot` (Linux):** Prompts before enabling — switches `wlan0` to AP mode (`WFR-Base`); pit crew opens Pecan at `http://10.42.0.1:3000`. **Warning:** disconnects Wi-Fi SSH/internet if no other adapter is present.
29
38
30
39
Subsequent updates: run the same command again.
31
40
41
+
**Pecan runs in the browser on pit devices** — the base station only serves static files and forwards telemetry. Open Pecan from a laptop or tablet on the LAN, not in Chromium on the Pi itself.
42
+
32
43
---
33
44
34
45
## Manual Setup
@@ -71,7 +82,7 @@ All configuration is done through `deploy/.env.macbook`. Key variables:
71
82
|`REMOTE_IP`|`10.71.1.10`| Car RPi IP address |
72
83
|`ENABLE_TIMESCALE_LOGGING`|`auto`| Auto-start writer when the TimescaleDB profile is running |
73
84
|`TIMESCALE_TABLE`|`WFR26test`| Season table name (no `_base` suffix — added automatically) |
74
-
|`DBC_HOST_PATH`|`./example.dbc`| Path to DBC file |
85
+
|`DBC_HOST_PATH`|`./universal-telemetry-software/deploy/example.dbc`| Path to DBC file (relative to repo root)|
75
86
|`RELAY_TOKEN`| blank | Optional relay token |
76
87
|`CLOUDFLARED_CONFIG`|`./cloudflared/config.yml`| Private tunnel config path for `--profile tunnel`|
77
88
|`CLOUDFLARED_CREDENTIALS`|`./cloudflared/credentials.json`| Private tunnel credentials path for `--profile tunnel`|
**TimescaleDB not writing:** Start with `docker compose --profile timescale ... up -d`. In `auto` mode, telemetry probes the configured database at boot and starts the writer only when it is reachable. Verify the `WFR26test_base` table exists: `psql postgresql://wfr:wfr_password@localhost:5432/wfr -c "\dt"`
130
141
142
+
## Network setup
143
+
144
+
### macOS
145
+
146
+
Set IP `10.71.1.20` on the USB-C ethernet adapter connected to the car radio base.
147
+
148
+
Via GUI: System Settings → Network → USB-C Ethernet → Configure IPv4 → Manually → IP: 10.71.1.20 / Subnet: 255.255.255.0
Set IP `10.71.1.20` on the ethernet interface connected to the car radio (USB-ethernet or onboard).
160
+
161
+
```bash
162
+
ip -br link # find interface name
163
+
164
+
# NetworkManager (RPi OS / Ubuntu)
165
+
sudo nmcli con mod '<connection-name>' ipv4.method manual \
166
+
ipv4.addresses 10.71.1.20/24 ipv4.gateway ''
167
+
sudo nmcli con up '<connection-name>'
168
+
169
+
# Or temporary (resets on reboot)
170
+
sudo ip addr add 10.71.1.20/24 dev eth0
171
+
172
+
ping -c 3 10.71.1.10
173
+
```
174
+
175
+
With `--hotspot`, the installer **asks for confirmation** before switching `wlan0` to AP mode (`WFR-Base` / `wfr-racing`). This disconnects any Wi-Fi client connection (including SSH over Wi-Fi) and removes internet on Wi-Fi unless another adapter (e.g. ethernet) is connected. Pit devices connect and open `http://10.42.0.1:3000`. The ethernet car link at `10.71.1.20` is independent.
176
+
177
+
---
178
+
131
179
## Windows / WSL2 — Limited Support
132
180
133
181
The base station stack is designed for macOS and native Linux. Windows support is limited:
0 commit comments