TS-877 (planned second reference box)
The owner’s TS-877 is to move to OMV 8. Nothing here has been run on it yet: facts come from upstream source and QNAP’s specifications (researched 2026-10-18) and are tagged [V] verified in source/spec, [I] inferred, [M] must be measured on the box. Compare with the measured ts-253d.md.
Delta from the TS-253D
| TS-253D | TS-877 | |
|---|---|---|
| CPU | Celeron J4125, coretemp | Ryzen 5 1600 / 7 1700 (Zen 1), k10temp [V] |
| qnap8528 | tested | entry TS-877 (MB QZ140, BP QZ220), added in v1.15, untested upstream (src/qnap8528.h) [V] |
| EC | IT8528 | most likely IT8528: the sibling TS-1277XU-RP probes as one without skip_hw_check (qnap8528 issue #26) [I] |
| Fans | 1 × 70 mm, pwm1 |
2 × 80 mm system + 2 × 90 mm CPU [V]; driver exposes fan1, fan2, fan7, fan8 and two PWM groups pwm1, pwm7 [V]; which group is the CPU fans [M] |
| LEDs | status, usb, hdd1-2 | status, ident, hdd1-6, ssd1-2 (2.5” bays), m2ssd1-2 [V]; usb listed in the driver but not in QNAP’s specs [M] |
| Hardware activity blink | hdd LEDs | m2ssd only [V] |
| Bays | 2 SATA | 6 × 3.5” + 2 × 2.5” SATA, 2 × M.2 SATA [V]; bay → ATA port map [M] |
| PCIe | 1 (QM2) | 3 (Gen3 x8, Gen3 x4, Gen2 x4); 10GbE only via a card [V] |
| Front panel | LEDs, USB Copy | 16×2 LCD with Enter/Select, Power, Reset, USB Copy [V] |
| Buzzer | “system warning buzzer” | same, plus 2 HD-audio speakers [V] |
| PSU | external | internal 450 W, no EC PSU sensors [I] |
What already works without changes [I]
set_pwmwrites everypwm*, so both groups follow the one curve and the failsafe drives both to full speed.- k10temp is a CPU source. Zen 1 non-X parts expose only
Tctl(no offset, noTdie; Linuxdrivers/hwmon/k10temp.c) [V];Tccd*may appear [M]. Presets were tuned for a 10 W Celeron: a 65 W Ryzen needs its own CPU range [M]. - Buttons: same EC register as the TS-253D (BTN_1 Reset, BTN_2 USB Copy on the TS-253D) [V]; re-check on the box [M].
Changes made for it
- No software activity blink. On LEDs without EC hardware blink, a
timertrigger at 100 ms makes the kernel blink in software: one EC write per LED every ~100 ms, which floods the EC lock that fan control also takes (qnap8528.cblink_setreturns -EINVAL). qnapd now blinks bays for activity only onHW_ACTIVITY_BLINK_MODELS(TS-253D); elsewhere bays show present / error. Locate still blinks (hardwarehas_locate).
Still to do
- Slot discovery for
ssdNandm2ssdNLEDs and a bay → ATA port table (10 SATA positions over the chipset and possibly extra AHCI controllers), filled from an LED walk (tools/model-test.py --interactive). - Per-group fan curves (PLAN §11): CPU fans on
Tctl, system fans on disks and EC temperatures, failsafe full speed on all groups. identLED as a chassis locate.- LCD (ICP A125 module, serial 1200 8N1, usually
/dev/ttyS1): commands start with4D(5E 01|00backlight,0C row len textwrite a row,0Dclear,28/29stop/start the built-in clock,00board ID,07protocol version); replies start with53(05 00 maskon every Enter/Select press and release,FAack). 16×2, write rows ~180 ms apart, at most ~2 updates/s. Sources: lcdprocserver/drivers/icp_a106.c(GPL-2+), stephenhouser/QnapLCD-Menu, johnnyvontruant/TruePanel (docs/A125_PROTOCOL.md), marzliak/qnap-ts470-linux (all MIT). Reimplement from the protocol in stdlib Python (termios); do not copy GPL code. Plan: anLcdthread in qnapd owning the port (status, temperatures, pools, IP; Enter/Select pages), handing back to the clock (4D 29) on stop. Risk: a TrueNAS user never got the TS-877 LCD to answer on ttyS0-3. First runtools/hw/lcd-probe.py(queries only); if no port answers, the UART may need EC/Super I/O routing, which would be a qnap8528 feature, never userspace port access. - Buzzer: qnap8528 has none. QNAP buzzers appear to be the PC-speaker
line, driven by the kernel
pcspkrdriver (EV_SND/SND_TONEon its input device; TruePanel uses this on a TVS-671) [I]; verified on the TS-253D (2026-10-18). Check it beeps on the TS-877 before adding beeps (start, shutdown, fan failure, USB Copy).
Before installing OMV on it
- qnap8528 v1.27 or newer for kernels 7.2+ (upstream issue #43), built with DKMS so kernel updates rebuild it (issue #33).
- Early Zen 1 on Linux: idle freezes are fixed in BIOS (“Power Supply Idle Control: Typical Current Idle”) or by kernel parameters [I].
- Run
tools/model-test.py(read-only) and post the report; then the LED walk, fan sweep per group andlcd-probe.py.