# DD3 LoRa Bridge Raspi Debugger Headless Raspberry Pi Zero W project: - WiFi client or fallback AP (`serial` / `serialserial`) - Web portal (`http://192.168.4.1/` in AP mode) - ESP32 USB serial bridge with live SSE stream and daily log files (`/home/pi/xxx_YYYY-MM-DD_HH-MM-SS.log`) - Stable symlink to active log (`/home/pi/xxx.log`) - RTC boot restore + NTP sync + RTC write-back - Autostart via systemd ## Current State Current implementation status: - Boot flow restores system time from RTC (`hwclock -s`) before starting logging. - If WLAN + internet is unavailable, AP fallback starts on `wlan0`: - SSID: `serial` - Password: `serialserial` - AP IP: `192.168.4.1/24` - DHCP range: `192.168.4.10` to `192.168.4.200` - Web portal is available on port `80`: - `/` WiFi scan + connect UI - `/serial` live serial console (SSE via `/events/serial`) - ESP32 serial bridge: - Auto-detects `/dev/ttyUSB*`, `/dev/ttyACM*`, `/dev/serial/by-id/*` - Reconnects automatically on unplug/replug - Daily log rollover at midnight with datetime filename - Once internet is available, NTP sync runs and writes corrected time back to RTC (`hwclock -w`). Runtime check commands: ```bash systemctl status serial-bridge journalctl -u serial-bridge -f ip a show wlan0 ls -l /home/pi/xxx.log /home/pi/xxx_*.log sudo hwclock -r ``` ## RTC GPIO Wiring (Raspberry Pi Zero W) Use I2C1 pins on the 40-pin header: | RTC module pin | Raspberry Pi pin | BCM GPIO | Notes | |---|---|---|---| | `VCC` | `Pin 1` | 3V3 | Use 3.3V | | `GND` | `Pin 6` | GND | Common ground | | `SDA` | `Pin 3` | GPIO2 (`SDA1`) | I2C data | | `SCL` | `Pin 5` | GPIO3 (`SCL1`) | I2C clock | Minimal pin marker (header top): ```text Pin 1 (3V3) Pin 2 (5V) Pin 3 (SDA1) Pin 4 (5V) Pin 5 (SCL1) Pin 6 (GND) ``` Enable I2C + RTC overlay (example DS3231): ```bash sudo raspi-config nonint do_i2c 0 echo 'dtoverlay=i2c-rtc,ds3231' | sudo tee -a /boot/firmware/config.txt sudo reboot ``` Verify: ```bash ls -l /dev/rtc0 sudo i2cdetect -y 1 sudo hwclock -r ``` ## Quick install (on Raspberry Pi) ```bash chmod +x install.sh sudo ./install.sh ``` Then reboot: ```bash sudo reboot ```