Skip to content

[BUG] Winbond USBDISPLAY ( 0416:5302) detected as 1280x480 but rendered as 240x320 #268

Description

@JyeroRayguster404

What's happening?

TRCC Linux Bug Report — Winbond USBDISPLAY 0416:5302

Summary

TRCC correctly detects the Winbond USBDISPLAY device and repeatedly completes a HID Type-2 handshake with:

  • VID:PID: 0416:5302
  • Device: USBDISPLAY
  • Firmware / bcdDevice: 0x0407
  • Wire: HID
  • PM: 128
  • SUB: 1
  • Reported resolution: 1280x480

However, the rendering pipeline later uses 240x320 for the same device. Frame transmission then fails immediately with:

short chunk write at offset 0
device.send returned False

The LCD does not update.

This appears to be a device-profile / resolution-mapping or HID Type-2 framebuffer compatibility problem rather than a basic USB detection or permission problem.

Environment

  • OS: Ubuntu 26.04 LTS
  • Kernel: 7.0.0-29-generic
  • TRCC: 9.9.5
  • Python: 3.14.4
  • Architecture: x86_64
  • Python implementation: CPython
  • GPU: NVIDIA, NVML initialized
  • Device: Winbond 0416:5302 USBDISPLAY
  • bcdDevice / firmware: 0x0407

Device Detection

TRCC detects one device:

0416:5302 USBDISPLAY wire=hid

The diagnostic report initially reports:

handshake: PM=128 SUB=1 fbl=128 resolution=1280x480

The log also contains multiple successful handshakes:

HidLcd handshake OK: PM=128 SUB=1 resolution=(1280, 480) (type 2)

This occurs repeatedly, including during diagnostic probing.

Important Resolution Inconsistency

Although the device handshake reports 1280x480, the rendering pipeline uses:

DisplayService.build_frame: visual=240x320

The Qt renderer then creates:

create_surface: 240x320

The preview also reports:

preview.set_image: 240x320 -> widget 240x320

Therefore the device is detected as a 1280x480 display during handshake, but TRCC renders the framebuffer as 240x320.

There is also one earlier handshake entry reporting:

PM=0 SUB=0 resolution=(240, 320) (type 2)

but subsequent diagnostic probes consistently return PM=128 SUB=1 resolution=1280x480.

Frame Transmission Failure

When TRCC attempts to send the rendered frame, the log shows:

HidLcd 0416:5302 (type 2): sending 154112-byte packet

followed immediately by:

short chunk write at offset 0

device.send returned False (frame)

frame write returned False

0416:5302 write returned False

This happens repeatedly.

Even a solid black frame produces the same failure:

build_solid_color_frame ... 240x320

followed by:

short chunk write at offset 0

device.send returned False

Sensors / System Health

TRCC itself is otherwise functioning:

  • Device detection: OK
  • Sensor enumeration: OK
  • NVIDIA NVML: OK
  • PySide6: OK
  • FFmpeg: OK
  • 7z: OK

The health report shows only one warning:

udev-rules: No TRCC udev rules found under /etc/udev/rules.d/

The report suggests trcc system setup, but USB access is already working and the device can be detected and opened.

Expected Behavior

The device should be treated according to the successful HID Type-2 handshake:

PM=128
SUB=1
resolution=1280x480

The rendered framebuffer should match the actual device profile and be transmitted successfully.

Actual Behavior

  1. Device is detected.
  2. HID Type-2 handshake succeeds.
  3. Device reports 1280x480.
  4. TRCC rendering switches to 240x320.
  5. TRCC generates a 240x320 framebuffer.
  6. HID frame write fails at offset 0.
  7. LCD does not update.

Request

Could you please check whether the 0416:5302 / firmware 0x0407 device profile is being mapped incorrectly?

In particular, please check:

  1. Why the successful handshake reports 1280x480 but DisplayService.build_frame() uses 240x320.
  2. Whether PM=128 / SUB=1 / fbl=128 has a dedicated HID Type-2 profile that should use 1280x480.
  3. Whether the framebuffer packet format / packet length for this device is different from the generic Type-2 240x320 profile.
  4. Why _write_frame() receives a short write at offset 0 even though device detection and handshake succeed.

Key Log Evidence

Successful handshake:

HidLcd handshake OK: PM=128 SUB=1 resolution=(1280, 480) (type 2)

Incorrect rendering size:

DisplayService.build_frame: ... visual=240x320

Frame transmission:

HidLcd 0416:5302 (type 2): sending 154112-byte packet

Failure:

short chunk write at offset 0
device.send returned False
frame write returned False

Thank you.

report.txt

Diagnostic report (trcc report)

Paste this whole report into the GitHub issue.
Sections degrade gracefully — empty / errored sections are
normal when a feature isn't applicable on this OS / machine.

## Install
  version             9.9.5
  installed_by        package
  module_path         /usr/lib/python3/dist-packages/trcc
  interpreter         /usr/bin/python3
  python              3.14.4
  on PATH             /usr/local/bin/trcc  ->  /usr/bin/python3

## Platform
  distro              Ubuntu 26.04 LTS
  python_impl         CPython
  machine             x86_64
  system              Linux
  release             7.0.0-29-generic

## Paths
  config_dir          /home/lunasia/.trcc
  data_dir            /home/lunasia/.trcc/data
  user_content_dir    /home/lunasia/.trcc-user
  log_file            /home/lunasia/.trcc/trcc.log

## Devices (1)
  0416:5302       USBDISPLAY                      wire=hid
    usb power: control=auto status=active remote_wakeup=no suspended_for=18975ms
    handshake: PM=128 SUB=1 fbl=128 resolution=1280x480
    raw[0:64]:  dadbdcdd0180000000000000010000001000000042503231393430190158624247022078

## Handshake (from log — fallback)
  2026-08-07T23:01:51 INFO    trcc.adapters.device._base:HidLcd.connect:83: HidLcd handshake OK: PM=128 SUB=1 resolution=(1280, 480) (type 2)
  2026-08-07T23:02:31 INFO    trcc.adapters.device._base:HidLcd.connect:83: HidLcd handshake OK: PM=128 SUB=1 resolution=(1280, 480) (type 2)
  2026-08-07T23:28:47 INFO    trcc.adapters.device._base:HidLcd.connect:83: HidLcd handshake OK: PM=0 SUB=0 resolution=(240, 320) (type 2)
  2026-08-08T00:07:35 INFO    trcc.adapters.device._base:HidLcd.connect:83: HidLcd handshake OK: PM=128 SUB=1 resolution=(1280, 480) (type 2)
  2026-08-08T00:12:43 INFO    trcc.adapters.device._base:HidLcd.connect:83: HidLcd handshake OK: PM=128 SUB=1 resolution=(1280, 480) (type 2)
  2026-08-08T00:13:20 INFO    trcc.adapters.device._base:HidLcd.connect:83: HidLcd handshake OK: PM=128 SUB=1 resolution=(1280, 480) (type 2)

## Sensors (60)
  cpu:temp                            30.00 °C  (temperature)
  cpu:usage                             0.00 %  (usage)
  cpu:freq                          806.71 MHz  (clock)
  cpu:power                                  —  (power)
  memory:used                       2832.00 MB  (memory)
  memory:available                 61172.90 MB  (memory)
  memory:total                     64004.90 MB  (memory)
  memory:percent                        4.40 %  (memory)
  memory:temp                                —  (temperature)
  memory:clock                               —  (clock)
  gpu:0:temp                          29.00 °C  (temperature)
  gpu:0:usage                           0.00 %  (usage)
  gpu:0:clock                       210.00 MHz  (clock)
  gpu:0:power                          33.05 W  (power)
  gpu:0:fan                             0.00 %  (fan)
  gpu:0:vram_used                    888.06 MB  (gpu_memory)
  gpu:0:vram_total                 24576.00 MB  (gpu_memory)
  gpu:nvidia:0:temp                   29.00 °C  (temperature)
  gpu:nvidia:0:usage                    0.00 %  (usage)
  gpu:nvidia:0:clock                210.00 MHz  (clock)
  gpu:nvidia:0:power                   33.05 W  (power)
  gpu:nvidia:0:fan                      0.00 %  (fan)
  gpu:nvidia:0:vram_used             888.06 MB  (gpu_memory)
  gpu:nvidia:0:vram_total          24576.00 MB  (gpu_memory)
  gpu:1:temp                                 —  (temperature)
  gpu:1:usage                                —  (usage)
  gpu:1:clock                         0.00 MHz  (clock)
  gpu:1:power                                —  (power)
  gpu:1:fan                                  —  (fan)
  gpu:1:vram_used                            —  (gpu_memory)
  gpu:1:vram_total                           —  (gpu_memory)
  gpu:intel:igpu:0:temp                      —  (temperature)
  gpu:intel:igpu:0:usage                     —  (usage)
  gpu:intel:igpu:0:clock              0.00 MHz  (clock)
  gpu:intel:igpu:0:power                     —  (power)
  gpu:intel:igpu:0:fan                       —  (fan)
  gpu:intel:igpu:0:vram_used                 —  (gpu_memory)
  gpu:intel:igpu:0:vram_total                —  (gpu_memory)
  gpu:primary:temp                    29.00 °C  (temperature)
  gpu:primary:usage                     0.00 %  (usage)
  gpu:primary:clock                 210.00 MHz  (clock)
  gpu:primary:power                    33.05 W  (power)
  gpu:primary:fan                       0.00 %  (fan)
  gpu:primary:vram_used              888.06 MB  (gpu_memory)
  gpu:primary:vram_total           24576.00 MB  (gpu_memory)
  disk:temp                           44.85 °C  (temperature)
  disk:read                                  —  (disk_io)
  disk:write                                 —  (disk_io)
  disk:activity                              —  (disk_io)
  net:up                                     —  (network_io)
  net:down                                   —  (network_io)
  net:total_up                         6.98 MB  (network_io)
  net:total_down                      20.49 MB  (network_io)
  time:hour                              0.00   (datetime)
  time:minute                           13.00   (datetime)
  time:second                           21.00   (datetime)
  date:year                           2026.00   (datetime)
  date:month                             8.00   (datetime)
  date:day                               8.00   (datetime)
  date:dow                               5.00   (datetime)

## CPU power (RAPL, 1 package domain(s))
  intel-rapl:0      package-0     energy_uj: readable (0o444)

## Settings
  No settings file at /home/lunasia/.trcc/config.json

## Health (0 fail / 1 warn / 11 total)
  [OK  ] install-integrity       9.9.5 via package (/usr/bin/python3)
  [OK  ] python-version          Python 3.14
  [OK  ] log-writable            Log directory writable: /home/lunasia/.trcc
  [OK  ] config-writable         Config directory writable: /home/lunasia/.trcc
  [OK  ] devices-visible         1 device(s) detected
  [OK  ] sensors-enumerable      60 sensor descriptor(s) available
  [OK  ] gpu-sensors             NVIDIA GPU sensors available (NVML initialized)
  [OK  ] ffmpeg                  ffmpeg on PATH (video themes will decode)
  [OK  ] pyside6                 PySide6 importable
  [WARN] udev-rules              No TRCC udev rules found under /etc/udev/rules.d/
         hint: Run `trcc system setup` (or install via the distro package) to lay down /etc/udev/rules.d/99-trcc.rules
  [OK  ] 7z                 # Log tail (1000 lines)
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.memory:211: memory: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.fan:216: fan: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.fans:219: fans: count=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.percent:94: percent: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.available:80: available: called
  2026-08-07T23:29:01 DEBUG   trcc.core.ports:BaselineSensors.snapshot:718: snapshot: cpus=1 gpus=2 cpu_temp=31.0 cpu_pct=1.0 gpu_temp=30.0 fans(rpm)=(0, 0.0, 0, 0)
  2026-08-07T23:29:01 DEBUG   trcc.services.metrics_personalize:personalize_metrics:112: personalize_metrics: temp_unit=C hdd_enabled=True cpus=1 gpus=2
  2026-08-07T23:29:01 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:01 DEBUG   trcc.core.events:EventBus.publish:407: publish: event=SensorsUpdated
  2026-08-07T23:29:01 DEBUG   trcc.app:_DeviceRenderObserver._on_visual_change:923: DeviceRenderObserver: SensorsUpdated for 0416:5302 → RenderAndSend
  2026-08-07T23:29:01 DEBUG   trcc.app:App.dispatch:783: dispatch RenderAndSend(key='0416:5302')
  2026-08-07T23:29:01 DEBUG   trcc.core.commands._helpers:_require_connected_device:226: _require_connected_device: key=0416:5302
  2026-08-07T23:29:01 DEBUG   trcc.app:App.get:570: get: key=0416:5302
  2026-08-07T23:29:01 DEBUG   trcc.adapters.system._base:LinuxPlatform.sensors:158: LinuxPlatform.sensors: returning cached enumerator
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:01 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:01 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:01 DEBUG   trcc.services.display:DisplayService.build_frame:260: build_frame 0416:5302: theme='Theme1' visual=240x320 orientation=0 brightness=100
  2026-08-07T23:29:01 DEBUG   trcc.services._clock:compute_clock:124: compute_clock: time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:01 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=time time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:01 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=date time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:01 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=weekday time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:01 DEBUG   trcc.services.display:DisplayService.build_frame:271: build_frame 0416:5302: clock=['date', 'time', 'weekday'] (time_format=24h date_format=yyyy/MM/dd lang=en)
  2026-08-07T23:29:01 DEBUG   trcc.services.media:MediaService.playback:546: playback: key=0416:5302
  2026-08-07T23:29:01 DEBUG   trcc.core.ports:LinuxPaths.user_data_dir:793: user_data_dir: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.system._base:LinuxPaths.user_content_dir:60: LinuxPaths.user_content_dir → /home/lunasia/.trcc-user
  2026-08-07T23:29:01 DEBUG   trcc.adapters.system._base:LinuxPaths.data_dir:56: LinuxPaths.data_dir → /home/lunasia/.trcc/data
  2026-08-07T23:29:01 DEBUG   trcc.services.theme:ThemeService._resolve_asset_ref:136: _resolve_asset_ref: 'web/240320/8720029fa0013099.png' → /home/lunasia/.trcc-user/data/web/240320/8720029fa0013099.png
  2026-08-07T23:29:01 INFO    trcc.services.theme:ThemeService.background_path:481: background_path: Theme1 → referenced asset /home/lunasia/.trcc-user/data/web/240320/8720029fa0013099.png
  2026-08-07T23:29:01 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:01 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:01 DEBUG   trcc.services.display:DisplayService.build_frame:284: build_frame 0416:5302: scene cache bg=HIT overlay=MISS
  2026-08-07T23:29:01 DEBUG   trcc.services.display:DisplayService._log_cache_transition:710: build_frame 0416:5302: cache state bg=True overlay=True → bg=HIT overlay=MISS
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.create_surface:115: create_surface: 240x320 color=None
  2026-08-07T23:29:01 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:01 DEBUG   trcc.services.display:DisplayService._build_overlay:1134: build_overlay 0416:5302: theme='Theme1' layout=mask (4 element(s)) [theme=1 mask=4 user=0] overlay_enabled=True
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.surface_size:134: surface_size: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.create_surface:115: create_surface: 240x320 color=None
  2026-08-07T23:29:01 DEBUG   trcc.services.overlay:OverlayService.render:235: render: 240x320, elements=4, sensors=46, clock_sources=['time', 'date', 'weekday'], temp_unit=C
  2026-08-07T23:29:01 DEBUG   trcc.services.overlay:OverlayService._draw_metric:329: draw_metric element[0]: cpu:temp=31°C at (77, 146)
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: '31°C' at (77, 146) size=15 color=#ffffff
  2026-08-07T23:29:01 DEBUG   trcc.services.overlay:OverlayService._draw_text:283: draw_text element[1]: 'CPU' at (29, 146) size=15
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: 'CPU' at (29, 146) size=15 color=#ffffff
  2026-08-07T23:29:01 DEBUG   trcc.services.overlay:OverlayService._draw_metric:329: draw_metric element[2]: gpu:primary:temp=30°C at (77, 175)
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: '30°C' at (77, 175) size=15 color=#ffffff
  2026-08-07T23:29:01 DEBUG   trcc.services.overlay:OverlayService._draw_text:283: draw_text element[3]: 'GPU' at (28, 175) size=15
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: 'GPU' at (28, 175) size=15 color=#ffffff
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.composite:142: composite: position=(0, 0) mask=False
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.composite:142: composite: position=(0, 0) mask=False
  2026-08-07T23:29:01 DEBUG   trcc.adapters.render.qt:QtRenderer.encode_rgb565:274: encode_rgb565: byte_order=<
  2026-08-07T23:29:01 DEBUG   trcc.services.display:DisplayService.rendered_surface:671: rendered_surface: key=0416:5302 available=True
  2026-08-07T23:29:01 DEBUG   trcc.services.device_sender:DeviceSender._raw_write:238: DeviceSender 0416:5302: write (frame)
  2026-08-07T23:29:01 DEBUG   trcc.core.events:EventBus.publish:407: publish: event=FrameSent
  2026-08-07T23:29:01 DEBUG   trcc.adapters.device.hid_lcd:HidLcd._prepare_frame:192: HidLcd 0416:5302 (type 2): sending 154112-byte packet
  2026-08-07T23:29:01 WARNING trcc.adapters.device.hid_lcd:HidLcd._write_frame:219: HidLcd 0416:5302: short chunk write at offset 0
  2026-08-07T23:29:01 WARNING trcc.services.device_sender:DeviceSender._raw_write:246: DeviceSender 0416:5302: device.send returned False (frame)
  2026-08-07T23:29:01 WARNING trcc.services.device_sender:DeviceSender._fail:162: DeviceSender 0416:5302: frame write returned False
  2026-08-07T23:29:01 DEBUG   trcc.ui.gui.trcc_app:TRCCApp._on_bus_frame_sent:552: _on_bus_frame_sent
  2026-08-07T23:29:01 DEBUG   trcc.app:App.dispatch:792: RenderAndSend ok: Rendered + sent 153600 bytes
  2026-08-07T23:29:01 DEBUG   trcc.ui.gui.uc_preview:UCPreview.set_image:207: preview.set_image: 240x320 → widget 240x320
  2026-08-07T23:29:01 DEBUG   trcc.services.metrics_loop:MetricsLoop._publish_once:248: MetricsLoop: SensorsUpdated(46) published (raw=46, temp_unit=C, hdd_enabled=True)
  2026-08-07T23:29:01 DEBUG   trcc.ui.gui.trcc_app:TRCCApp._on_bus_sensors_updated:600: _on_bus_sensors_updated: 46 readings
  2026-08-07T23:29:01 WARNING trcc.app:App._on_sender_failure:663: _on_sender_failure: 0416:5302 write returned False
  2026-08-07T23:29:01 DEBUG   trcc.ui.gui.trcc_app:TRCCApp._fan_out_metrics:639: _fan_out_metrics: reason=bus readings=46 info_vis=False sysinfo_vis=False sidebar_vis=False
  2026-08-07T23:29:01 DEBUG   trcc.ui.gui.lcd_handler:LCDHandler.update_metrics:991: update_metrics
  2026-08-07T23:29:01 DEBUG   trcc.ui.gui.lcd_handler.0416:5302:LCDHandler.update_metrics:994: update_metrics: 0416:5302 readings=46
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors._poll_once:334: _poll_once: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.usage:49: usage: warm=True
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.freq:57: freq: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.used:73: used: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.available:80: available: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.total:87: total: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.percent:94: percent: called
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.fan:216: fan: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.vram_used:226: vram_used: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.vram_total:236: vram_total: idx=0
  2026-08-07T23:29:01 DEBUG   trcc.adapters.sensors.psutil_sources:ComputedIo.poll:116: poll: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.system._base:LinuxPlatform.sensors:158: LinuxPlatform.sensors: returning cached enumerator
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:03 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.cpu:207: cpu: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.usage:49: usage: warm=True
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.freq:57: freq: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.memory:211: memory: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.fan:216: fan: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.fans:219: fans: count=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.percent:94: percent: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.available:80: available: called
  2026-08-07T23:29:03 DEBUG   trcc.core.ports:BaselineSensors.snapshot:718: snapshot: cpus=1 gpus=2 cpu_temp=31.0 cpu_pct=1.0 gpu_temp=30.0 fans(rpm)=(0, 0.0, 0, 0)
  2026-08-07T23:29:03 DEBUG   trcc.services.metrics_personalize:personalize_metrics:112: personalize_metrics: temp_unit=C hdd_enabled=True cpus=1 gpus=2
  2026-08-07T23:29:03 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:03 DEBUG   trcc.core.events:EventBus.publish:407: publish: event=SensorsUpdated
  2026-08-07T23:29:03 DEBUG   trcc.app:_DeviceRenderObserver._on_visual_change:923: DeviceRenderObserver: SensorsUpdated for 0416:5302 → RenderAndSend
  2026-08-07T23:29:03 DEBUG   trcc.app:App.dispatch:783: dispatch RenderAndSend(key='0416:5302')
  2026-08-07T23:29:03 DEBUG   trcc.core.commands._helpers:_require_connected_device:226: _require_connected_device: key=0416:5302
  2026-08-07T23:29:03 DEBUG   trcc.app:App.get:570: get: key=0416:5302
  2026-08-07T23:29:03 DEBUG   trcc.adapters.system._base:LinuxPlatform.sensors:158: LinuxPlatform.sensors: returning cached enumerator
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:03 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:03 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:03 DEBUG   trcc.services.display:DisplayService.build_frame:260: build_frame 0416:5302: theme='Theme1' visual=240x320 orientation=0 brightness=100
  2026-08-07T23:29:03 DEBUG   trcc.services._clock:compute_clock:124: compute_clock: time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:03 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=time time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:03 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=date time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:03 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=weekday time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:03 DEBUG   trcc.services.display:DisplayService.build_frame:271: build_frame 0416:5302: clock=['date', 'time', 'weekday'] (time_format=24h date_format=yyyy/MM/dd lang=en)
  2026-08-07T23:29:03 DEBUG   trcc.services.media:MediaService.playback:546: playback: key=0416:5302
  2026-08-07T23:29:03 DEBUG   trcc.core.ports:LinuxPaths.user_data_dir:793: user_data_dir: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.system._base:LinuxPaths.user_content_dir:60: LinuxPaths.user_content_dir → /home/lunasia/.trcc-user
  2026-08-07T23:29:03 DEBUG   trcc.adapters.system._base:LinuxPaths.data_dir:56: LinuxPaths.data_dir → /home/lunasia/.trcc/data
  2026-08-07T23:29:03 DEBUG   trcc.services.theme:ThemeService._resolve_asset_ref:136: _resolve_asset_ref: 'web/240320/8720029fa0013099.png' → /home/lunasia/.trcc-user/data/web/240320/8720029fa0013099.png
  2026-08-07T23:29:03 INFO    trcc.services.theme:ThemeService.background_path:481: background_path: Theme1 → referenced asset /home/lunasia/.trcc-user/data/web/240320/8720029fa0013099.png
  2026-08-07T23:29:03 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:03 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:03 DEBUG   trcc.services.display:DisplayService.build_frame:284: build_frame 0416:5302: scene cache bg=HIT overlay=MISS
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.create_surface:115: create_surface: 240x320 color=None
  2026-08-07T23:29:03 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:03 DEBUG   trcc.services.display:DisplayService._build_overlay:1134: build_overlay 0416:5302: theme='Theme1' layout=mask (4 element(s)) [theme=1 mask=4 user=0] overlay_enabled=True
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.surface_size:134: surface_size: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.create_surface:115: create_surface: 240x320 color=None
  2026-08-07T23:29:03 DEBUG   trcc.services.overlay:OverlayService.render:235: render: 240x320, elements=4, sensors=46, clock_sources=['time', 'date', 'weekday'], temp_unit=C
  2026-08-07T23:29:03 DEBUG   trcc.services.overlay:OverlayService._draw_metric:329: draw_metric element[0]: cpu:temp=31°C at (77, 146)
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: '31°C' at (77, 146) size=15 color=#ffffff
  2026-08-07T23:29:03 DEBUG   trcc.services.overlay:OverlayService._draw_text:283: draw_text element[1]: 'CPU' at (29, 146) size=15
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: 'CPU' at (29, 146) size=15 color=#ffffff
  2026-08-07T23:29:03 DEBUG   trcc.services.overlay:OverlayService._draw_metric:329: draw_metric element[2]: gpu:primary:temp=30°C at (77, 175)
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: '30°C' at (77, 175) size=15 color=#ffffff
  2026-08-07T23:29:03 DEBUG   trcc.services.overlay:OverlayService._draw_text:283: draw_text element[3]: 'GPU' at (28, 175) size=15
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: 'GPU' at (28, 175) size=15 color=#ffffff
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.composite:142: composite: position=(0, 0) mask=False
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.composite:142: composite: position=(0, 0) mask=False
  2026-08-07T23:29:03 DEBUG   trcc.adapters.render.qt:QtRenderer.encode_rgb565:274: encode_rgb565: byte_order=<
  2026-08-07T23:29:03 DEBUG   trcc.services.display:DisplayService.rendered_surface:671: rendered_surface: key=0416:5302 available=True
  2026-08-07T23:29:03 DEBUG   trcc.core.events:EventBus.publish:407: publish: event=FrameSent
  2026-08-07T23:29:03 DEBUG   trcc.services.device_sender:DeviceSender._raw_write:238: DeviceSender 0416:5302: write (frame)
  2026-08-07T23:29:03 DEBUG   trcc.adapters.device.hid_lcd:HidLcd._prepare_frame:192: HidLcd 0416:5302 (type 2): sending 154112-byte packet
  2026-08-07T23:29:03 WARNING trcc.adapters.device.hid_lcd:HidLcd._write_frame:219: HidLcd 0416:5302: short chunk write at offset 0
  2026-08-07T23:29:03 WARNING trcc.services.device_sender:DeviceSender._raw_write:246: DeviceSender 0416:5302: device.send returned False (frame)
  2026-08-07T23:29:03 WARNING trcc.services.device_sender:DeviceSender._fail:162: DeviceSender 0416:5302: frame write returned False
  2026-08-07T23:29:03 WARNING trcc.app:App._on_sender_failure:663: _on_sender_failure: 0416:5302 write returned False
  2026-08-07T23:29:03 DEBUG   trcc.app:App.dispatch:792: RenderAndSend ok: Rendered + sent 153600 bytes
  2026-08-07T23:29:03 DEBUG   trcc.ui.gui.trcc_app:TRCCApp._on_bus_frame_sent:552: _on_bus_frame_sent
  2026-08-07T23:29:03 DEBUG   trcc.ui.gui.uc_preview:UCPreview.set_image:207: preview.set_image: 240x320 → widget 240x320
  2026-08-07T23:29:03 DEBUG   trcc.services.metrics_loop:MetricsLoop._publish_once:248: MetricsLoop: SensorsUpdated(46) published (raw=46, temp_unit=C, hdd_enabled=True)
  2026-08-07T23:29:03 DEBUG   trcc.ui.gui.trcc_app:TRCCApp._on_bus_sensors_updated:600: _on_bus_sensors_updated: 46 readings
  2026-08-07T23:29:03 DEBUG   trcc.ui.gui.trcc_app:TRCCApp._fan_out_metrics:639: _fan_out_metrics: reason=bus readings=46 info_vis=False sysinfo_vis=False sidebar_vis=False
  2026-08-07T23:29:03 DEBUG   trcc.ui.gui.lcd_handler:LCDHandler.update_metrics:991: update_metrics
  2026-08-07T23:29:03 DEBUG   trcc.ui.gui.lcd_handler.0416:5302:LCDHandler.update_metrics:994: update_metrics: 0416:5302 readings=46
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors._poll_once:334: _poll_once: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.usage:49: usage: warm=True
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.freq:57: freq: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.used:73: used: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.available:80: available: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.total:87: total: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.percent:94: percent: called
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.fan:216: fan: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.vram_used:226: vram_used: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.vram_total:236: vram_total: idx=0
  2026-08-07T23:29:03 DEBUG   trcc.adapters.sensors.psutil_sources:ComputedIo.poll:116: poll: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.system._base:LinuxPlatform.sensors:158: LinuxPlatform.sensors: returning cached enumerator
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:05 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.cpu:207: cpu: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.usage:49: usage: warm=True
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.freq:57: freq: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.memory:211: memory: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.fan:216: fan: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.fans:219: fans: count=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.percent:94: percent: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.available:80: available: called
  2026-08-07T23:29:05 DEBUG   trcc.core.ports:BaselineSensors.snapshot:718: snapshot: cpus=1 gpus=2 cpu_temp=31.0 cpu_pct=0.3 gpu_temp=30.0 fans(rpm)=(0, 0.0, 0, 0)
  2026-08-07T23:29:05 DEBUG   trcc.services.metrics_personalize:personalize_metrics:112: personalize_metrics: temp_unit=C hdd_enabled=True cpus=1 gpus=2
  2026-08-07T23:29:05 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:05 DEBUG   trcc.core.events:EventBus.publish:407: publish: event=SensorsUpdated
  2026-08-07T23:29:05 DEBUG   trcc.app:_DeviceRenderObserver._on_visual_change:923: DeviceRenderObserver: SensorsUpdated for 0416:5302 → RenderAndSend
  2026-08-07T23:29:05 DEBUG   trcc.app:App.dispatch:783: dispatch RenderAndSend(key='0416:5302')
  2026-08-07T23:29:05 DEBUG   trcc.core.commands._helpers:_require_connected_device:226: _require_connected_device: key=0416:5302
  2026-08-07T23:29:05 DEBUG   trcc.app:App.get:570: get: key=0416:5302
  2026-08-07T23:29:05 DEBUG   trcc.adapters.system._base:LinuxPlatform.sensors:158: LinuxPlatform.sensors: returning cached enumerator
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:05 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:05 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:05 DEBUG   trcc.services.display:DisplayService.build_frame:260: build_frame 0416:5302: theme='Theme1' visual=240x320 orientation=0 brightness=100
  2026-08-07T23:29:05 DEBUG   trcc.services._clock:compute_clock:124: compute_clock: time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:05 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=time time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:05 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=date time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:05 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=weekday time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:05 DEBUG   trcc.services.display:DisplayService.build_frame:271: build_frame 0416:5302: clock=['date', 'time', 'weekday'] (time_format=24h date_format=yyyy/MM/dd lang=en)
  2026-08-07T23:29:05 DEBUG   trcc.services.media:MediaService.playback:546: playback: key=0416:5302
  2026-08-07T23:29:05 DEBUG   trcc.core.ports:LinuxPaths.user_data_dir:793: user_data_dir: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.system._base:LinuxPaths.user_content_dir:60: LinuxPaths.user_content_dir → /home/lunasia/.trcc-user
  2026-08-07T23:29:05 DEBUG   trcc.adapters.system._base:LinuxPaths.data_dir:56: LinuxPaths.data_dir → /home/lunasia/.trcc/data
  2026-08-07T23:29:05 DEBUG   trcc.services.theme:ThemeService._resolve_asset_ref:136: _resolve_asset_ref: 'web/240320/8720029fa0013099.png' → /home/lunasia/.trcc-user/data/web/240320/8720029fa0013099.png
  2026-08-07T23:29:05 INFO    trcc.services.theme:ThemeService.background_path:481: background_path: Theme1 → referenced asset /home/lunasia/.trcc-user/data/web/240320/8720029fa0013099.png
  2026-08-07T23:29:05 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:05 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:05 DEBUG   trcc.services.display:DisplayService.build_frame:284: build_frame 0416:5302: scene cache bg=HIT overlay=MISS
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.create_surface:115: create_surface: 240x320 color=None
  2026-08-07T23:29:05 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:05 DEBUG   trcc.services.display:DisplayService._build_overlay:1134: build_overlay 0416:5302: theme='Theme1' layout=mask (4 element(s)) [theme=1 mask=4 user=0] overlay_enabled=True
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.surface_size:134: surface_size: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.create_surface:115: create_surface: 240x320 color=None
  2026-08-07T23:29:05 DEBUG   trcc.services.overlay:OverlayService.render:235: render: 240x320, elements=4, sensors=46, clock_sources=['time', 'date', 'weekday'], temp_unit=C
  2026-08-07T23:29:05 DEBUG   trcc.services.overlay:OverlayService._draw_metric:329: draw_metric element[0]: cpu:temp=31°C at (77, 146)
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: '31°C' at (77, 146) size=15 color=#ffffff
  2026-08-07T23:29:05 DEBUG   trcc.services.overlay:OverlayService._draw_text:283: draw_text element[1]: 'CPU' at (29, 146) size=15
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: 'CPU' at (29, 146) size=15 color=#ffffff
  2026-08-07T23:29:05 DEBUG   trcc.services.overlay:OverlayService._draw_metric:329: draw_metric element[2]: gpu:primary:temp=30°C at (77, 175)
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: '30°C' at (77, 175) size=15 color=#ffffff
  2026-08-07T23:29:05 DEBUG   trcc.services.overlay:OverlayService._draw_text:283: draw_text element[3]: 'GPU' at (28, 175) size=15
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.draw_text:221: draw_text: 'GPU' at (28, 175) size=15 color=#ffffff
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.composite:142: composite: position=(0, 0) mask=False
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.composite:142: composite: position=(0, 0) mask=False
  2026-08-07T23:29:05 DEBUG   trcc.adapters.render.qt:QtRenderer.encode_rgb565:274: encode_rgb565: byte_order=<
  2026-08-07T23:29:05 DEBUG   trcc.services.display:DisplayService.rendered_surface:671: rendered_surface: key=0416:5302 available=True
  2026-08-07T23:29:05 DEBUG   trcc.core.events:EventBus.publish:407: publish: event=FrameSent
  2026-08-07T23:29:05 DEBUG   trcc.app:App.dispatch:792: RenderAndSend ok: Rendered + sent 153600 bytes
  2026-08-07T23:29:05 DEBUG   trcc.services.metrics_loop:MetricsLoop._publish_once:248: MetricsLoop: SensorsUpdated(46) published (raw=46, temp_unit=C, hdd_enabled=True)
  2026-08-07T23:29:05 DEBUG   trcc.services.device_sender:DeviceSender._raw_write:238: DeviceSender 0416:5302: write (frame)
  2026-08-07T23:29:05 DEBUG   trcc.ui.gui.trcc_app:TRCCApp._on_bus_frame_sent:552: _on_bus_frame_sent
  2026-08-07T23:29:05 DEBUG   trcc.adapters.device.hid_lcd:HidLcd._prepare_frame:192: HidLcd 0416:5302 (type 2): sending 154112-byte packet
  2026-08-07T23:29:05 DEBUG   trcc.ui.gui.uc_preview:UCPreview.set_image:207: preview.set_image: 240x320 → widget 240x320
  2026-08-07T23:29:05 DEBUG   trcc.ui.gui.trcc_app:TRCCApp._on_bus_sensors_updated:600: _on_bus_sensors_updated: 46 readings
  2026-08-07T23:29:05 DEBUG   trcc.ui.gui.trcc_app:TRCCApp._fan_out_metrics:639: _fan_out_metrics: reason=bus readings=46 info_vis=False sysinfo_vis=False sidebar_vis=False
  2026-08-07T23:29:05 DEBUG   trcc.ui.gui.lcd_handler:LCDHandler.update_metrics:991: update_metrics
  2026-08-07T23:29:05 DEBUG   trcc.ui.gui.lcd_handler.0416:5302:LCDHandler.update_metrics:994: update_metrics: 0416:5302 readings=46
  2026-08-07T23:29:05 WARNING trcc.adapters.device.hid_lcd:HidLcd._write_frame:219: HidLcd 0416:5302: short chunk write at offset 0
  2026-08-07T23:29:05 WARNING trcc.services.device_sender:DeviceSender._raw_write:246: DeviceSender 0416:5302: device.send returned False (frame)
  2026-08-07T23:29:05 WARNING trcc.services.device_sender:DeviceSender._fail:162: DeviceSender 0416:5302: frame write returned False
  2026-08-07T23:29:05 WARNING trcc.app:App._on_sender_failure:663: _on_sender_failure: 0416:5302 write returned False
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors._poll_once:334: _poll_once: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.usage:49: usage: warm=True
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.freq:57: freq: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.used:73: used: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.available:80: available: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.total:87: total: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.percent:94: percent: called
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.fan:216: fan: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.vram_used:226: vram_used: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.vram_total:236: vram_total: idx=0
  2026-08-07T23:29:05 DEBUG   trcc.adapters.sensors.psutil_sources:ComputedIo.poll:116: poll: called
  2026-08-07T23:29:07 DEBUG   trcc.adapters.system._base:LinuxPlatform.sensors:158: LinuxPlatform.sensors: returning cached enumerator
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:07 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.cpu:207: cpu: called
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.usage:49: usage: warm=True
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilCpu.freq:57: freq: called
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.gpus:215: gpus: count=2
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.memory:211: memory: called
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.fan:216: fan: idx=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.fans:219: fans: count=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.temp:174: temp: idx=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.usage:185: usage: idx=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.clock:195: clock: idx=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.nvml:NvidiaGpu.power:206: power: idx=0
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.percent:94: percent: called
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.psutil_sources:PsutilMemory.available:80: available: called
  2026-08-07T23:29:07 DEBUG   trcc.core.ports:BaselineSensors.snapshot:718: snapshot: cpus=1 gpus=2 cpu_temp=33.0 cpu_pct=0.2 gpu_temp=30.0 fans(rpm)=(0, 0.0, 0, 0)
  2026-08-07T23:29:07 DEBUG   trcc.services.metrics_personalize:personalize_metrics:112: personalize_metrics: temp_unit=C hdd_enabled=True cpus=1 gpus=2
  2026-08-07T23:29:07 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:07 DEBUG   trcc.core.events:EventBus.publish:407: publish: event=SensorsUpdated
  2026-08-07T23:29:07 DEBUG   trcc.app:_DeviceRenderObserver._on_visual_change:923: DeviceRenderObserver: SensorsUpdated for 0416:5302 → RenderAndSend
  2026-08-07T23:29:07 DEBUG   trcc.app:App.dispatch:783: dispatch RenderAndSend(key='0416:5302')
  2026-08-07T23:29:07 DEBUG   trcc.core.commands._helpers:_require_connected_device:226: _require_connected_device: key=0416:5302
  2026-08-07T23:29:07 DEBUG   trcc.app:App.get:570: get: key=0416:5302
  2026-08-07T23:29:07 DEBUG   trcc.adapters.system._base:LinuxPlatform.sensors:158: LinuxPlatform.sensors: returning cached enumerator
  2026-08-07T23:29:07 DEBUG   trcc.adapters.sensors.aggregator:BaselineSensors.read_all:284: read_all: cached=46
  2026-08-07T23:29:07 DEBUG   trcc.services.metrics_personalize:personalize_readings:76: personalize_readings: raw=46 temp_unit=C hdd_enabled=True
  2026-08-07T23:29:07 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:07 DEBUG   trcc.services.display:DisplayService.build_frame:260: build_frame 0416:5302: theme='Theme1' visual=240x320 orientation=0 brightness=100
  2026-08-07T23:29:07 DEBUG   trcc.services._clock:compute_clock:124: compute_clock: time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:07 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=time time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:07 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=date time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:07 DEBUG   trcc.services._clock:resolve_clock:99: resolve_clock: source=weekday time_format=24h date_format=yyyy/MM/dd lang=en
  2026-08-07T23:29:07 DEBUG   trcc.services.display:DisplayService.build_frame:271: build_frame 0416:5302: clock=['date', 'time', 'weekday'] (time_format=24h date_format=yyyy/MM/dd lang=en)
  2026-08-07T23:29:07 DEBUG   trcc.services.media:MediaService.playback:546: playback: key=0416:5302
  2026-08-07T23:29:07 DEBUG   trcc.core.ports:LinuxPaths.user_data_dir:793: user_data_dir: called
  2026-08-07T23:29:07 DEBUG   trcc.adapters.system._base:LinuxPaths.user_content_dir:60: LinuxPaths.user_content_dir → /home/lunasia/.trcc-user
  2026-08-07T23:29:07 DEBUG   trcc.adapters.system._base:LinuxPaths.data_dir:56: LinuxPaths.data_dir → /home/lunasia/.trcc/data
  2026-08-07T23:29:07 DEBUG   trcc.services.theme:ThemeService._resolve_asset_ref:136: _resolve_asset_ref: 'web/240320/8720029fa0013099.png' → /home/lunasia/.trcc-user/data/web/240320/8720029fa0013099.png
  2026-08-07T23:29:07 INFO    trcc.services.theme:ThemeService.background_path:481: background_path: Theme1 → referenced asset /home/lunasia/.trcc-user/data/web/240320/8720029fa0013099.png
  2026-08-07T23:29:07 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:07 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:07 DEBUG   trcc.services.display:DisplayService.build_frame:284: build_frame 0416:5302: scene cache bg=HIT overlay=MISS
  2026-08-07T23:29:07 DEBUG   trcc.adapters.render.qt:QtRenderer.create_surface:115: create_surface: 240x320 color=None
  2026-08-07T23:29:07 DEBUG   trcc.services.settings:Settings.for_device:212: for_device: key=0416:5302
  2026-08-07T23:29:07 DEBUG   trcc.services.display:DisplayService._build_overlay:1134: build_overlay 0416:5302: theme='Theme1' layout=mask (4 element(s)) [theme=1 mask=4 user=0] overlay_enabled=True     7z on PATH (theme-pack extraction available)

Device (model + USB ID if you know it)

Thermaright Trofeo Vision (0416 : 5302)

Steps to reproduce (optional)

  1. Connect the Thermaltake Trofeo Vison 6.86" LCD via USB.
  2. RUN 'trcc detect' and confirm the device is detected as 0416: 5302.
  3. Load or create a theme and try to send it to the Lcd.
  4. The GUI works, but the LCD remains on the factory/default screen.
  5. The log shows framebuffer write failures, including "short chunk write at offset 0" and "device.send returned False".

Before submitting

  • I'm on the latest version (pip install --upgrade trcc-linux, or the latest installer)
  • I pasted my trcc report above — or my install/launch error if it won't run

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions