Captures everything needed to redeploy the two-display clock (hour on I2C 0x61, minute on I2C 0x63) on a fresh Pi: - Both systemd units (matrix0x61.service, matrix0x63.service) - Deployed Pimoroni script tree, including the local %I (12-hour) clock customization - Vendored upstream sources (ltp305-python, breakout-garden) so restore is fully offline-capable - Boot config snippet enabling I2C - install.sh that wires it all back up idempotently - Inventory doc cross-referencing every live-system path Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
matrix-pi
Backup of the Pimoroni LTP-305G LED matrix display setup running on matrixpi
under the dissimulo user. Two LTP-305G modules are wired to the I2C bus and
display the current time as a clock — hour on the left module (I2C 0x61),
minute on the right (I2C 0x63).
Hardware
- Raspberry Pi (running Debian Bookworm, kernel 6.6.x)
- 2 × Pimoroni LTP-305G breakouts on I2C bus 1
0x61— hour digits0x63— minute digits
What's in here
| Path | Purpose |
|---|---|
systemd/ |
The two systemd units that run the clock at boot |
deployed/ |
Mirror of the on-disk script tree the units invoke (includes the local %I 12-hour customization to clock.py) |
vendor/ltp305-python/ |
Vendored copy of the Pimoroni ltp305 Python library (offline install fallback) |
vendor/breakout-garden/ |
Vendored copy of Pimoroni's Breakout Garden tooling (used for I2C autodetect) |
config/boot-firmware-config.txt.snippet |
The /boot/firmware/config.txt lines that enable I2C |
install.sh |
Idempotent restore script |
docs/inventory.md |
Source-of-truth inventory of every LTP-305G-related file on the live system |
Restoring on a fresh Pi
-
Flash Raspberry Pi OS (Bookworm or later), create user
dissimulo. -
Ensure I2C is enabled — either via
raspi-configor by appending the line fromconfig/boot-firmware-config.txt.snippetto/boot/firmware/config.txtand rebooting. -
Wire the two LTP-305G breakouts; confirm with
i2cdetect -y 1that they appear at0x61and0x63. (Installi2c-toolsif missing.) -
From a clone of this repo, run:
sudo ./install.shThis installs the
ltp305Python package fromvendor/, drops the customized scripts into/home/dissimulo/Pimoroni/ltp305/, and enables both systemd units. -
Verify:
systemctl status matrix0x61.service matrix0x63.service
Local customization vs. upstream
The deployed clock.py differs from the upstream Pimoroni ltp305-python
example by one line — the hour format is %I (12-hour) instead of %H
(24-hour). This is preserved in deployed/home/dissimulo/Pimoroni/ltp305/examples/clock.py.
Upstream provenance
Vendored sources were captured from these commits:
pimoroni/ltp305-python@bf859fe6cddf8cffcb12d62bad8f21e0bbb9fc42pimoroni/breakout-garden@9c331458ee8c4732dbc783a6409ef53d671d321b