Decision Tree

พบปัญหา?

├── อุปกรณ์ Offline?
│   │
│   ├─ สาย USB หลุด?
│   ├─ USB Debugging ไม่เปิด?
│   ├─ RSA ไม่ได้ accept?
│   └─ สายเป็นแบบชาร์จอย่างเดียว?

├── อุปกรณ์ Unauthorized?
│   │
│   └─ Revoke + Re-accept RSA?

├── ทุกเครื่อง Offline?
│   │
│   ├─ Network UNO มีปัญหา?
│   ├─ device-agent หยุดทำงาน?
│   └─ Firewall บล็อก?

└── คำสั่งไม่ทำงาน?

    ├─ โทรศัพท์ Lock?
    └─ App crash?

ปัญหา: อุปกรณ์ Offline

สาเหตุและวิธีแก้

  1. ตรวจสอบว่าสายเสียบแน่นที่ทั้งด้านโทรศัพท์และ UNO/Hub
  2. ลองเสียบสายใหม่
  3. ถ้าใช้ Hub ลองเสียบเข้าพอร์ตอื่น
  1. บนโทรศัพท์ ไปที่ Settings → Developer Options
  2. ตรวจสอบว่า USB Debugging เปิดอยู่
  3. ถ้าปิด → เปิด แล้วถอดสาย USB แล้วเสียบใหม่
  1. บนโทรศัพท์ ไปที่ Settings → Developer Options
  2. กด “Revoke USB authorizations”
  3. ถอดสาย USB
  4. เสียบสาย USB ใหม่
  5. บนโทรศัพท์จะมี popup → กด Allow และติ๊ก “Always allow”
บางสายเป็นสายชาร์จเท่านั้น ไม่มีสาย data
  1. ลองสายอื่นที่รู้ว่าใช้ได้
  2. ซื้อสาย USB data จาก Anker หรือ Ugreen

คำสั่งตรวจสอบ

# บน UNO
adb devices -l

# ควรเห็น:
# <serial>    device

# ถ้าเห็น:
# <serial>    unauthorized  → RSA ไม่ได้ accept
# <serial>    offline      → ลองถอดสายเสียบใหม่
# ไม่เห็นเลย      → ตรวจสอบ USB hub หรือสาย

ปัญหา: อุปกรณ์ Unauthorized

สาเหตุ: RSA key fingerprint ไม่ได้ถูกยอมรับบนโทรศัพท์

วิธีแก้

  1. บนโทรศัพท์: SettingsDeveloper Options
  2. กด “Revoke USB authorizations”
  3. ถอดสาย USB ออก
  4. เสียบสาย USB ใหม่
  5. บนโทรศัพท์จะมี popup ใหม่
  6. ติ๊ก “Always allow from this computer”
  7. กด Allow
# บน UNO ตรวจสอบ
adb devices -l
# ควรเปลี่ยนจาก unauthorized เป็น device

ปัญหา: อุปกรณ์ No Permissions

สาเหตุ: User บน Linux ไม่ได้อยู่ใน plugdev group

วิธีแก้

# SSH เข้า UNO
ssh amos@192.168.1.50

# เพิ่ม user เข้า plugdev group
sudo usermod -aG plugdev frappe

# Restart service
sudo systemctl restart amos-device-agent

# ถอดสาย USB แล้วเสียบใหม่

ปัญหา: device-agent ไม่รัน

ตรวจสอบสถานะ

# SSH เข้า UNO
ssh amos@192.168.1.50

# ดูสถานะ service
sudo systemctl status amos-device-agent

ถ้า service หยุด

# เริ่ม service
sudo systemctl start amos-device-agent

# ดู logs
journalctl -u amos-device-agent -n 50 --no-pager

ถ้า service ไม่เริ่ม (failed)

# ดู logs เต็มๆ
journalctl -u amos-device-agent -e --no-pager

# สาเหตุที่พบบ่อย:
# - AMOS_API_URL ผิด
# - network ไม่ได้
# - port ถูกบล็อก

# แก้ไข environment
sudo systemctl edit amos-device-agent
# แก้ไข AMOS_API_URL แล้ว
sudo systemctl daemon-reload
sudo systemctl restart amos-device-agent

ปัญหา: Network

ตรวจสอบ Network

# ดู IP address
hostname -I

# ทดสอบ internet
ping -c 3 1.1.1.1

# ทดสอบ AMOS API
ping -c 3 amos-api.moo-vpn.online

# ดู firewall
sudo ufw status

ถ้า Network ไม่ได้

# ดู network interface
ip addr show

# ดู DNS
cat /etc/resolv.conf

# restart network
sudo systemctl restart NetworkManager

ปัญหา: โทรศัพท์ Lock

ปลุกโทรศัพท์

# กดปุ่ม power (wake up)
adb -s <serial> shell input keyevent KEYCODE_WAKEUP

# ถ้าหน้าจอดับ
adb -s <serial> shell input keyevent POWER

Unlock ด้วย PIN

# ใส่ PIN ของคุณ (แทนที่ 1234)
adb -s <serial> shell input keyevent 82  # 82 = เริ่ม unlock
adb -s <serial> shell input text 1234

Reboot โทรศัพท์

adb -s <serial> reboot

ปัญหา: แบตเตอรี่หมดเร็ว

ตรวจสอบสาเหตุ

# ดูสถานะแบตเตอรี่
adb -s <serial> shell dumpsys battery

# ดู wake locks
adb -s <sserial> shell dumpsys power | grep -i wake

แก้ไข

# ตั้งค่า screen timeout 30 วินาที
adb -s <serial> shell settings put system screen_off_timeout 30000

# ปิด screen เมื่อไม่ได้ใช้
adb -s <serial> shell input keyevent POWER

ปัญหา: App ค้าง/Crash

Restart App

# Force stop แล้วเปิดใหม่
adb -s <serial> shell am force-stop com.zhiliaoapp.musically
adb -s <serial> shell am start -n com.zhiliaoapp.musically/.MainActivity

Clear App Data

# ล้าง cache และ data (⚠️ ต้อง login ใหม่)
adb -s <serial> shell pm clear com.zhiliaoapp.musically

คำสั่ง Emergency

# 1. ดูว่าอะไรผิดพลาด
journalctl -u amos-device-agent -n 100 --no-pager

# 2. Restart service
sudo systemctl restart amos-device-agent

# 3. ถ้าไม่ได้ → reboot UNO
sudo reboot

# 4. ถ้าเข้า SSH ไม่ได้ → ไปที่หน้า Cockpit
# https://192.168.1.50:9090
# แล้ว restart จาก web interface

ตารางสรุปปัญหาและวิธีแก้

ปัญหาสาเหตุวิธีแก้
Offlineสายหลุดเสียบสายใหม่
OfflineUSB Debugging ปิดเปิด USB Debugging
UnauthorizedRSA ไม่ acceptRevoke + Re-accept
No permissionsplugdev groupusermod -aG plugdev frappe
Offline ทุกเครื่องservice หยุดsystemctl start amos-device-agent
Offline ทุกเครื่องnetwork มีปัญหาping 1.1.1.1
คำสั่งไม่ทำงานโทรศัพท์ lockinput keyevent WAKEUP
แบตหมดเร็วscreen timeout ยาวsettings put screen_off_timeout 30000
App ค้างapp crasham force-stop + am start

ขั้นตอนถัดไป

Maintenance

การบำรุงรักษารายเดือน/รายปี

Quick Reference

คำสั่งและ URL ที่ใช้บ่อย