From ae8229588efc6780b164eb30d2de2d7be27763c7 Mon Sep 17 00:00:00 2001 From: Rene Kievits Date: Sat, 5 Sep 2026 23:58:33 +0200 Subject: [PATCH] tools: add read-only on-TV diagnostic dump Run with: ssh root@ 'sh -s' < tools/tv-diag.sh > tv-diag.txt Co-Authored-By: Claude Opus 5 --- tools/tv-diag.sh | 105 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100755 tools/tv-diag.sh diff --git a/tools/tv-diag.sh b/tools/tv-diag.sh new file mode 100755 index 0000000..31a6984 --- /dev/null +++ b/tools/tv-diag.sh @@ -0,0 +1,105 @@ +#!/bin/sh +# Dumps everything needed to work out why the update popup still appears. +# Read-only: it changes nothing on the TV. +# +# ssh root@ 'sh -s' < tools/tv-diag.sh > tv-diag.txt +# +# Busybox-friendly on purpose - no bashisms, every command guarded. + +SLUG=lgupdateblocker +STATE=/var/lib/webosbrew/$SLUG + +section() { echo; echo "=================== $* ==================="; } +have() { command -v "$1" >/dev/null 2>&1; } + +section "identity" +id +cat /etc/starfish-release 2>/dev/null || echo "(no /etc/starfish-release)" +cat /var/run/nyx/device_info.json 2>/dev/null | head -c 600 +echo +uptime +date + +section "did our boot hook run this boot?" +ls -l /var/lib/webosbrew/init.d/ 2>&1 +echo "--- last 60 lines of $STATE/boot.log ---" +tail -60 "$STATE/boot.log" 2>&1 +echo "--- config ---" +cat "$STATE/config.json" 2>&1 +echo +echo "--- hosts list the hook uses ---" +cat "$STATE/hosts.txt" 2>&1 + +section "homebrew channel startup" +ls -la /var/lib/webosbrew/ 2>&1 +ls -la /var/luna/preferences/ 2>/dev/null | grep -i webosbrew +echo "--- hbc startup script ---" +ls -l /media/developer/apps/usr/palm/services/org.webosbrew.hbchannel.service/startup.sh 2>&1 + +section "/etc/hosts" +cat /etc/hosts 2>&1 +echo "--- is it bind-mounted? ---" +grep -i hosts /proc/mounts 2>&1 + +section "does blocking actually work?" +for h in su.lge.com snu.lge.com nsu.lge.com su-ssl.lge.com; do + if have nslookup; then + echo "$h -> $(nslookup "$h" 2>&1 | tail -3 | tr '\n' ' ')" + else + echo "$h -> $(ping -c 1 -W 2 "$h" 2>&1 | head -1)" + fi +done + +section "staged firmware / update data" +find /mnt/lg -maxdepth 4 \( -iname '*swupdate*' -o -iname '*epk*' -o -iname '*upgrade*' \) 2>/dev/null | head -40 +for d in /mnt/lg/cmn_data/swupdate /mnt/lg/swupdate /mnt/lg/user/swupdate; do + [ -e "$d" ] || continue + echo "--- $d ---" + ls -la "$d" 2>&1 + du -sh "$d" 2>&1 +done +echo "--- anything mounted over them? ---" +grep -i -E 'swupdate|/mnt/lg' /proc/mounts 2>&1 + +section "update services" +echo "--- upstart jobs ---" +ls /etc/init 2>/dev/null | grep -i -E 'update|upgrade|swup|ota' +echo "--- luna services ---" +ls /usr/palm/services 2>/dev/null | grep -i -E 'update|upgrade|swup|ota' +ls /var/palm/ls2/roles/prv 2>/dev/null | grep -i -E 'update|upgrade|swup|ota' +echo "--- running processes ---" +ps 2>/dev/null | grep -i -E 'swupdate|updater|upgrade' | grep -v grep + +section "update-related settings" +for c in option general network commercial system; do + echo "--- category $c ---" + luna-send -n 1 -f "luna://com.webos.settingsservice/getSystemSettings" \ + "{\"category\":\"$c\"}" 2>&1 | + tr ',' '\n' | grep -i -E 'update|upgrade|firmware|ota|epk' +done + +section "what the update service itself says" +for svc in com.webos.service.swupdate com.webos.service.swupdater com.webos.service.update com.webos.service.upgrade; do + echo "--- $svc/getStatus ---" + luna-send -n 1 -t 3 -f "luna://$svc/getStatus" '{}' 2>&1 | head -c 500 + echo +done + +section "boot log: who raised the popup" +for f in /var/log/messages /var/log/syslog; do + [ -f "$f" ] || continue + echo "--- $f (update-related, last 60) ---" + grep -i -E 'swupdate|softwareupdate|upgrade|firmware' "$f" 2>/dev/null | tail -60 +done +echo "--- notifications / alerts, last 40 ---" +grep -i -E 'createAlert|notificationmgr|systemAlert' /var/log/messages 2>/dev/null | tail -40 + +section "luna preferences that mention update" +grep -ril update /var/luna/preferences/ 2>/dev/null | head -20 +for f in $(grep -ril update /var/luna/preferences/ 2>/dev/null | head -20); do + echo "--- $f ---" + head -c 300 "$f" + echo +done + +section "done"