Skip to main content

[Fix] แก้ปัญหา Laptop ค้าง จอดำ ล็อกอินไม่ได้ เมื่อพับจอแล้วเสียบ Docking (KDE Plasma + TLP)

· 7 min read

บันทึกการแก้ปัญหา — 27 กันยายน 2569 — ThinkPad T14 + KDE Plasma + TLP

ผมใช้ ThinkPad T14 กับ Dell Dock WD19S เป็นประจำ — พับจอเดินออกจากโต๊ะ แล้วกลับมาเปิดฝาที่โต๊ะใหม่ ระบบค้างทุกครั้ง หน้าจอดำสนิทหรือเห็นหน้าล็อกอินแต่พิมพ์รหัสไม่ติด บางครั้งต้องถอดปลั๊กแล้วเสียบใหม่ถึงจะฟื้น

ตอนแรกสันนิษฐานว่าเป็นบั๊กของ KWin หรือ Wayland session — แต่หลังไล่ log + เทียบกับ tlp-stat -u ถึงได้รู้ว่าตัวร้ายจริงๆ คือ TLP ที่สั่งให้อุปกรณ์ของ Dock หลับลึกตอนพับจอ พอตื่นมาระบบก็ wake ไม่ทัน

โพสต์นี้รวบ fix ที่ใช้ได้จริง ปรับค่า TLP 3 จุดให้เข้ากับ Dock

TL;DR​

ตัวร้ายคือ TLP ที่ตั้งค่า BAT profile เข้มงวดเกินไป — สั่ง autosuspend USB ทุกพอร์ต + runtime PM PCIe + Intel GPU เข้าโหมดประหยัดสุด พอเอาเครื่องไปเสียบ Dock ขณะที่ยังไม่ตื่น Dock ก็ส่งสัญญาณโถมเข้ามา แต่อุปกรณ์ของ Dock ยังหลับอยู่ → KWin งง → login screen ค้าง/จอดำ

แก้ด้วยการเพิ่ม Hardware ID ของ Dock เข้า USB_DENYLIST ใน /etc/tlp.conf + บังคับ PCIe runtime PM เปิดตลอด + ปรับ Intel GPU จาก power_saving เป็น base profile บน BAT ครับ

อาการที่เจอ​

อาการมีสามแบบ ขึ้นกับจังหวะ wake up:

  • จอดำสนิท — เปิดฝามาแล้วไม่เห็นอะไรเลย ไม่มี cursor ไม่มี backlight
  • เห็นหน้าล็อกอินแต่พิมพ์ไม่ได้ — รูป login screen ค้างนิ่ง กด Space/พิมพ์รหัส/Enter ไม่มีอะไรเกิดขึ้น
  • ค้างที่ SDDM — หน้าจอ sddm-greeter หมุนติ้วๆ หรือค้างที่ "Starting..." ตลอด

ลอง Ctrl+Alt+F3 เพื่อเข้า TTY ก็ได้ shell ปกติ แปลว่าระบบไม่ได้ค้างจริง — แค่ display stack ของ KDE ที่คุยกับ Dock ไม่สำเร็จ

ขั้นที่ 1 — ระบุ Hardware ID ของ Dock​

เปิด terminal ขณะเสียบ Dock อยู่:

tlp-stat -u

ผลลัพธ์จะมีบรรทัดแบบนี้ของอุปกรณ์ใน Dock:

Bus 002 Device 019 ID 0bda:0487 control = auto -- Realtek Semiconductor Corp. Dell dock (hub)
Bus 002 Device 020 ID 0bda:0413 control = auto -- Realtek Semiconductor Corp. Dell dock (hub)
Bus 002 Device 023 ID 0bda:8153 control = auto -- Realtek RTL8153 Gigabit Ethernet Adapter (r8152)
Bus 003 Device 049 ID 0bda:5487 control = auto -- Realtek Semiconductor Corp. Dell dock (hub)
Bus 003 Device 050 ID 0bda:5413 control = auto -- Realtek Semiconductor Corp. Dell dock (hub)
Bus 003 Device 052 ID 413c:b06e control = on -- Dell Computer Corp. Dell Dock WD19S (usbhid)
Bus 003 Device 054 ID 413c:b06f control = on -- Dell Computer Corp. Dell dock (usbhid)

ให้จด ID ของอุปกรณ์ที่เป็น ชิปเซ็ตของ Dock ทั้งหมด — ทั้ง Hub, Ethernet, และ Input controller — ของผมได้แบบนี้:

0bda:0487
0bda:0413
0bda:5487
0bda:5413
0bda:8153
413c:b06e
413c:b06f

[!NOTE] Hub ของ Dell Dock มักใช้ชิป Realtek (0bda:xxxx) หลายตัว — ต้องใส่ทุกตัว ไม่งั้นตัวที่เหลือจะ autosuspend ลูกของมัน (เช่น Ethernet) ตามไปด้วย

ถ้าใช้ dock ยี่ห้ออื่น ให้จด ID ที่อยู่ในกลุ่มเดียวกัน เช่น xxxx: ที่ติด hub/ethernet/input ของ dock

ขั้นที่ 2 — แก้ /etc/tlp.conf​

เปิดไฟล์คอนฟิก:

sudo nano /etc/tlp.conf

แก้ 3 ค่านี้:

# 1. ห้าม TLP แตะอุปกรณ์ของ Dock
USB_DENYLIST="0bda:0487 0bda:0413 0bda:5487 0bda:5413 0bda:8153 413c:b06e 413c:b06f"

# 2. เปิด PCIe runtime PM ตลอดเวลาแม้ใช้แบตฯ (ป้องกัน Type-C/Thunderbolt หลับลึก)
RUNTIME_PM_ON_BAT="on"

# 3. ลดความเข้มงวดของ Intel GPU บนแบตฯ
INTEL_GPU_POWER_PROFILE_ON_BAT="base"

[!NOTE] ใน TLP เวอร์ชันเก่า (< 1.5) ค่านี้ชื่อ USB_BLACKLIST — ถ้าใช้ TLP ตั้งแต่ 1.5 ขึ้นไปให้ใช้ USB_DENYLIST ตรวจเวอร์ชันด้วย tlp-stat -v

บันทึก (Ctrl+O, Enter, Ctrl+X) แล้วสั่ง reload:

sudo tlp start

ขั้นที่ 3 — ตรวจว่าใช้ค่าจริง​

รันใหม่อีกรอบ:

tlp-stat -u

ตอนนี้บรรทัดของอุปกรณ์ใน USB_DENYLIST ต้องเปลี่ยนจาก control = auto เป็น control = on ทั้งหมด และที่หัว output จะขึ้น:

+++ USB
Autosuspend = enabled
Device allowlist = (not configured)
Device denylist = 0bda:0487 0bda:0413 0bda:5487 0bda:5413 0bda:8153 413c:b06e 413c:b06f

ครบ — ทดสอบโดยพับจอ → suspend → เสียบ Dock → เปิดฝาจอ

ผลลัพธ์ที่ได้​

หลังแก้ทั้ง 3 ค่า:

  • พับจอเดินออก → suspend → กลับมาเสียบ Dock → เปิดฝา → login screen ขึ้นตามปกติ พิมพ์รหัสได้
  • ลองทำซ้ำ 5-6 รอบ ไม่เจออาการอีกเลย (ทั้ง AC และ battery)
  • ตอนถอด Dock ออก กลับเป็น laptop mode ปกติ

ค่าใช้แบตฯเพิ่มขึ้นเล็กน้อยจาก PCIe runtime PM + GPU profile ที่เปิดตลอด — ของผมวัดคร่าวๆ ประมาณ 5-10% ต่อวัน เทียบกับความเสถียรที่ได้คืนมา ยอมรับได้สบาย

ทางเลือกถ้ายังไม่หาย​

ถ้าแก้ตามนี้แล้วยังเจออาการอยู่ ลองตรวจต่อ:

  • ค่าใน /etc/tlp.d/*.conf — บาง distro (Fedora, Ubuntu) มี drop-in ที่ override ค่าใน tlp.conf ให้ตามไปแก้ที่ drop-in ด้วย
  • สลับ Wayland ↔ X11 — ถ้าใช้ Wayland แล้วยังมี atomic commit failed ค้างเป็นบางจังหวะ ลองเปลี่ยนเป็น X11 session ที่หน้า SDDM
  • เคลียร์ kwinoutputconfig.json — ไฟล์ layout จอเก่าอาจเสียหาย ลบ ~/.config/kwinoutputconfig.json แล้วให้ KDE สร้างใหม่ตอนเสียบ Dock ครั้งถัดไป

[!NOTE] ถ้าจะลองปิด TLP ชั่วคราวเพื่อ confirm ว่าตัวมันเองทำให้เกิดอาการ ใช้ sudo tlp stop แล้วทดสอบ — ถ้าหายก็ชัวร์ว่าเป็น TLP อย่างเดียว ค่อยกลับมาเปิด sudo tlp start แล้วไล่แก้คอนฟิกตามขั้นบน

สรุป​

ปัญหา login ค้าง/จอดำตอนพับจอแล้วเสียบ Dock ไม่ใช่เรื่อง KWin — เป็นเรื่อง TLP ที่ตั้งค่า power management เข้มงวดเกินไปจนอุปกรณ์ใน Dock ตื่นไม่ทัน

Fix ที่จำเป็นจริงๆ มี 3 ค่า:

Keyค่าทำไม
USB_DENYLISTใส่ ID ทุกชิปใน Dockกันไม่ให้ TLP autosuspend พอร์ต/Hub/Ethernet ของ Dock
RUNTIME_PM_ON_BATonกัน PCIe/Thunderbolt bus หลับลึกตอนใช้แบตฯ
INTEL_GPU_POWER_PROFILE_ON_BATbaseกันไดรเวอร์ Intel GPU เข้าโหมดประหยัดสุดที่ตื่นช้า

ใช้เวลาแก้ประมาณ 10 นาที รวมถึงรอบที่ต้องเทียบ log + เช็คค่าใน tlp-stat -u ซ้ำ หลังจากนั้นลืมไปได้เลย

อ้างอิง​

แชร์บทความ
☕

เนื้อหานี้มีประโยชน์ไหม? ช่วยสนับสนุนค่ากาแฟให้ผู้เขียนสักแก้ว

Buy Me a Coffee
Loading...