Đến nội dung chính
Phạm Nam

Tìm kiếm

Nhập từ khoá để tìm trong các bài viết.

Quay lại
vi

CleanYourTV: Dọn sạch Android TV khỏi quảng cáo, không root

CleanYourTV dọn quảng cáo, app rác trên Android TV/Google TV qua ADB Wi-Fi, không root, không gỡ app, hoàn tác một lệnh. Cách kiểm tra model và cài launcher.

14 phút đọc—

Ảnh minh họa: CleanYourTV: Dọn sạch Android TV khỏi quảng cáo, không root

Tivi mới mua đã đầy quảng cáo: nỗi khó chịu quen thuộc của người dùng Android TV

Buổi tối, bạn bật tivi Xiaomi ở phòng khách chỉ để xem tiếp một tập phim. Màn hình chính hiện hàng gợi ý bạn không xem, banner quảng cáo chen giữa các ứng dụng và một loạt app cài sẵn chưa từng mở. Bạn tìm app xem phim trong mớ biểu tượng đó, bấm nhầm sang app quảng cáo, quay lại, rồi lại tìm tiếp.

Xóa tay từng app bằng remote không giải quyết được chuyện này. Nhiều app hệ thống không cho gỡ theo cách thông thường, app tắt hôm nay có thể quay lại sau một lần cập nhật firmware, và tắt nhầm package hệ thống có thể hỏng HDMI, Wi-Fi hay remote. Bài này trình bày một phương pháp đáp ứng ba yêu cầu: không root, không gỡ app nào khỏi tivi, hoàn tác bằng một lệnh. Công cụ là CleanYourTV, bộ công cụ mã nguồn mở chạy từ máy tính qua ADB Wi-Fi, kèm launcher riêng thay màn hình chính mặc định.

Lưu ý ngay từ đầu: phương pháp này chỉ áp dụng đầy đủ cho Android TV và Google TV. Samsung Tizen, LG webOS, Roku, Vizio và Hisense VIDAA không có ADB nên không dùng được. Fire TV chỉ dọn dẹp một phần, vì Fire OS không nhường quyền Home cho launcher bên thứ ba; riêng Fire TV Box 2015 còn không dọn được phần đó.

CleanYourTV là gì và giải quyết vấn đề nào

CleanYourTV là gì: bộ công cụ debloat Android TV mã nguồn mở (MIT)

CleanYourTV là dự án của Gathin23 trên GitHub, trang chính thức tại cleanyour.tv, phát hành v3.3.0 ngày 2026-11-01. Tại thời điểm kiểm tra, repo có khoảng 51.382 stars và 6.497 forks, ra đời ngày 2026-10-17. Dự án công bố danh sách debloat cho 427 model thuộc 111 hãng, trong đó TCL có 81 danh sách, Sony 47 và Xiaomi 42. Đây là số liệu do dự án công bố, chưa kiểm chứng độc lập; điều quan trọng với người đọc không phải con số tổng mà là model của mình có trong danh sách hay không.

Bộ công cụ gồm ba phần: danh sách debloat theo từng model, các script xác định để thăm dò, vô hiệu hóa, kiểm tra và hoàn tác, và launcher gốc nhẹ khoảng 572 KB thay màn hình chính mặc định bằng giao diện tối giản kiểu Apple TV. Cơ chế rất thẳng thắn: sao lưu package và cài đặt trước mọi thay đổi, rồi dùng pm disable-user --user 0 để vô hiệu hóa từng package trong danh sách. Không có gì bị gỡ khỏi tivi, không flash, không root. Launcher mới được cài và đặt làm Home mặc định, rồi launcher gốc mới bị vô hiệu hóa.

Ai nên dùng CleanYourTV, ai không nên

Công cụ phù hợp với chủ tivi Android TV hoặc Google TV, đặc biệt các dòng Xiaomi, TCL, Sony vốn nhiều app cài sẵn và hàng gợi ý. Người dùng homelab và sysadmin quản lý vài tivi ở văn phòng hay phòng họp cũng dùng được, miễn là chấp nhận làm từng tivi một qua ADB.

Ngược lại, nếu tivi chạy Samsung Tizen, LG webOS, Roku, Vizio hay Hisense VIDAA, hãy dừng ở đây và dùng hướng dẫn tắt theo dõi bằng remote tại cleanyour.tv/not-android mà dự án trỏ tới. Nếu bạn không muốn bật ADB dù chỉ tạm thời, hoặc kỳ vọng gỡ hẳn app để lấy lại dung lượng, CleanYourTV không đáp ứng được vì nó chỉ vô hiệu hóa, không gỡ cài đặt.

Một phương án khác đã có trên blog này là cách dùng prompt AI để debloat tivi, trình bày trong bài Hồi sinh tivi chậm, lag bằng AI. Cách đó linh hoạt vì AI tự rà soát theo từng trường hợp, nhưng không lặp lại được chính xác và không có launcher riêng hay bản ghi hoàn tác có cấu trúc. Bài này đi hướng ngược lại: danh sách kiểm chứng theo model, script xác định và vòng kiểm tra sau cập nhật firmware.

Kiến trúc và cơ chế hoạt động của CleanYourTV

Sơ đồ kiến trúc duy nhất của bài viết

flowchart TB
    PC["Máy tính\nAssistant hoặc script thủ công\nPython venv + Android SDK 34"]
    ADB["ADB qua Wi-Fi\nCùng mạng LAN"]
    PM["TV Package Manager\npm disable-user --user 0\nChỉ vô hiệu hóa, không gỡ"]
    STOCK["Stock Launcher\nLauncher gốc, nhiều quảng cáo"]
    NEW["CleanYourTV Launcher\n~572 KB, Home mặc định mới"]
    LIST["debloat.txt\nDanh sách theo model tivi"]
    RECORD["~/.cleanyourtv/\nBản ghi thay đổi"]
    CHECK["tools/check.py\nKiểm tra drift sau firmware"]
    RESTORE["tools/restore.sh\nPhát lại bản ghi để hoàn tác"]
    GATE["tools/adb-closed.py\nXác minh đã tắt ADB"]
    PC --> ADB --> PM
    LIST --> PM
    PM --> STOCK
    PM --> NEW
    NEW -. "Trả lời intent HOME trước" .-> STOCK
    PM --> RECORD --> RESTORE
    CHECK -. "--fix áp lại sau firmware" .-> PM
    GATE -. "Đóng phiên làm việc" .-> ADB

Máy tính kết nối tới tivi qua ADB Wi-Fi, PackageManager vô hiệu hóa package theo danh sách, launcher mới tiếp quản quyền Home, mọi thay đổi được ghi lại để hoàn tác, và vòng kiểm tra drift xử lý trường hợp firmware cập nhật làm mất hiệu lực dọn dẹp.

Các thành phần chính: danh sách theo model, script, launcher

Danh sách theo model là phần đáng đọc kỹ nhất. Trước khi chạy lệnh nào, hãy tra model của mình tại cleanyour.tv/tvs hoặc thư mục examples/ của repo. Nếu model chưa có danh sách, bạn phải tự rà soát package và rủi ro tắt nhầm tăng lên rõ rệt. Đừng lấy danh sách của model khác rồi chạy mù, vì package hệ thống khác nhau theo hãng và bản firmware. Các script chính gồm tools/tv.py --probe để thăm dò, tools/disable.sh để áp danh sách, tools/restore.sh để hoàn tác, tools/check.py để so sánh trạng thái thực tế với danh sách, và tools/theme.sh themes/aurora để đổi theme. Launcher được build bằng launcher/build-and-install.sh, và script này tự rollback nếu Home không rơi vào launcher mới.

Luồng điều khiển: backup → disable → thay Home → kiểm tra → hoàn tác

Thứ tự làm việc là một phần của tính an toàn. Đầu tiên, sao lưu package và cài đặt hiện tại. Sau đó vô hiệu hóa từng batch nhỏ theo danh sách, thay vì tắt hàng loạt rồi mới kiểm tra. Launcher mới được cài và xác nhận trả lời intent HOME trước khi launcher gốc bị vô hiệu hóa. Nhờ chốt an toàn này, script không bao giờ để tivi rơi vào trạng thái không có Home app. Cuối cùng, chạy check.py để xác nhận trạng thái và đóng ADB sau phiên làm việc.

Phụ thuộc kỹ thuật và giới hạn

Về phía máy tính, bạn cần Python 3, JDK 17–22 và Android SDK platform 34 kèm build-tools 34. JDK 23 trở lên không tương thích với Gradle 8.9 mà dự án dùng. Trên macOS, tài liệu hướng dẫn cài bằng brew install openjdk@17 android-commandlinetools rồi dùng sdkmanager để lấy platform và build-tools 34. Nếu máy chỉ có Docker, dự án có đường build bằng tools/docker-build.sh với JDK 17 và SDK 34, cài đặt bằng SKIP_BUILD=1. Về phía tivi, cần bật Developer options bằng cách vào Settings, Device Preferences, About, nhấn OK vào mục Build 7 lần, sau đó bật USB debugging và Network debugging nếu có. Tivi phải bật và cùng mạng Wi-Fi với máy tính trong suốt phiên làm việc. Dự án ước lượng toàn bộ quá trình khoảng 15 phút, nhưng đây là con số ước lượng của dự án, không phải kết quả đo trên một model cụ thể.

Hướng dẫn triển khai CleanYourTV từng bước

Điều kiện tiên quyết và kiểm tra model trước khi bắt đầu

Xác nhận tivi chạy Android TV hoặc Google TV và tìm đúng danh sách theo model. Chuẩn bị một máy tính cùng mạng Wi-Fi với tivi, ghi lại địa chỉ IP của tivi, và đảm bảo bạn biết cách quay lại Settings bằng remote khi cần hoàn tác thủ công. Bản ghi restore chỉ có giá trị khi nó được tạo trước mọi thay đổi, nên đừng bỏ qua bước sao lưu.

Cách 1 — Dùng AI assistant với PROMPT.md (nhanh nhất)

git clone https://github.com/Gathin23/cleanyourtv

Mở thư mục vừa clone trong Claude Code, Codex, Gemini CLI hoặc Antigravity CLI, dán nội dung file PROMPT.md kèm model tivi của bạn. Assistant sẽ tự chạy các bước thăm dò, vô hiệu hóa và cài launcher. Cách này nhanh, nhưng bạn không nhìn thấy từng lệnh nếu không yêu cầu assistant giải thích trước khi chạy. Theo mình, nếu đây là lần đầu bạn động vào ADB, hãy chọn cách thủ công bên dưới để hiểu rõ từng bước, rồi những lần sau mới giao cho assistant.

Cách 2 — Làm thủ công bằng lệnh (kiểm soát từng bước)

Tạo môi trường Python, cài requirements và đặt địa chỉ IP thật của tivi (không dùng địa chỉ ví dụ trong tài liệu):

python3 -m venv tools/venv && tools/venv/bin/pip install -r tools/requirements.txt
export TV_HOST=<IP-tivi-thật>
tools/venv/bin/python -I tools/tv.py --probe
tools/venv/bin/python -I tools/tv.py 'pm list packages'

Nếu --probe không kết nối được, dừng lại và xử lý lỗi ở phần troubleshooting, đừng chạy disable.sh khi chưa chắc mình đang nói chuyện với đúng chiếc tivi. Khi kết nối đã chắc chắn, áp danh sách đúng model (ví dụ Xiaomi Mi TV 4A), rồi cài launcher và đổi theme:

tools/disable.sh examples/xiaomi-mi-tv-4a/debloat.txt
TV_HOST=<IP-tivi-thật> launcher/build-and-install.sh
tools/theme.sh themes/aurora

Kiểm tra sau triển khai và output kỳ vọng

tools/venv/bin/python -I tools/check.py examples/<model-cua-ban>/debloat.txt

Kết quả kỳ vọng: các package trong danh sách ở trạng thái disabled, launcher mới là Home mặc định, tivi vẫn vào được HDMI, Wi-Fi và remote hoạt động bình thường. Kiểm tra thủ công thêm ba việc: khởi động lại tivi rồi xem màn hình chính có phải launcher mới không, mở một app hay dùng, và chuyển sang một đầu vào HDMI. Bước cuối cùng, dễ quên nhất, là tắt ADB debugging trên tivi và dùng tools/adb-closed.py của dự án để xác minh cổng ADB đã đóng.

Lỗi thường gặp và cách xử lý

Không kết nối ADB thường do sai IP, tivi và máy tính khác mạng Wi-Fi, chưa bật Network debugging, hoặc tivi đã ngủ. Kiểm tra từng điểm theo thứ tự đó rồi chạy lại --probe. Launcher gốc vẫn hiện nghĩa là Home chưa chuyển sang launcher mới. Đừng vô hiệu hóa launcher gốc bằng tay, vì bạn có thể phá chốt an toàn của script; hãy chạy lại build-and-install.sh để cơ chế rollback tự xử lý. Google TV có một gotcha riêng: sau khi tắt launcher gốc, trình hướng dẫn thiết lập com.google.android.tungsten.setupwraith có thể làm Home crash-loop. Cách xử lý là tắt luôn package này, nhưng phải kiểm tra quyền sở hữu Wi-Fi trước, vì tắt nó có thể xóa mạng Wi-Fi đã lưu trong quá trình setup. Sau cập nhật firmware, dọn dẹp mất tác dụng là hành vi bình thường: package quay lại, Home về launcher gốc, preload mới xuất hiện. Chạy check.py rồi dùng --fix để áp lại danh sách, thay vì chạy disable.sh mù từ đầu. Nếu sau khi dọn tivi lỗi một chức năng, dừng ngay và chạy restore thay vì tắt thêm package để “sửa”.

Đánh giá kỹ thuật: ưu điểm, nhược điểm, bảo mật

Ưu điểm của CleanYourTV

Điểm mạnh lớn nhất là tính lặp lại và hoàn tác được. Cùng một danh sách đã kiểm chứng có thể áp cho nhiều tivi cùng model, và bản ghi trong ~/.cleanyourtv/ cho phép quay lại trạng thái cũ bằng một lệnh. Việc chỉ vô hiệu hóa thay vì gỡ giúp rủi ro thấp hơn root hay flash, và launcher mã nguồn mở MIT nhẹ, không gắn với tài khoản hay dịch vụ nào. Vòng kiểm tra drift sau firmware cũng là điểm khác biệt thực sự so với cách gõ lệnh ADB lẻ tẻ: dọn dẹp không còn là việc làm một lần rồi quên.

Nhược điểm và giới hạn thực tế

Nhược điểm lớn nhất nằm ngay trong ưu điểm: chỉ disable chứ không gỡ, nên đừng kỳ vọng giải phóng dung lượng lưu trữ như gỡ thật. “Dọn sạch” ở đây là dọn trải nghiệm — quảng cáo, telemetry, màn hình chính rối — chứ không phải dọn bộ nhớ. Tiếp theo, giá trị của công cụ phụ thuộc vào danh sách theo model; model chưa có danh sách đồng nghĩa với việc bạn tự chịu trách nhiệm rà soát. Cuối cùng, mỗi tivi vẫn cần một phiên ADB riêng, không có quản lý tập trung, dashboard hay triển khai hàng loạt. Với vài tivi thì ổn, với một fleet lớn thì đây không phải công cụ phù hợp.

Bảo mật: ADB là cửa ngõ lớn nhất, không phải launcher

Bật ADB qua Wi-Fi chỉ trong phiên làm việc, tắt ngay sau khi xong và xác minh bằng tools/adb-closed.py. Một cổng ADB mở trên mạng LAN là bề mặt tấn công thật: bất kỳ máy nào trong cùng mạng cũng có thể gửi lệnh tới tivi. Vì vậy đừng để ADB qua đêm, đừng bật trên Wi-Fi công cộng hay mạng không tin cậy. Về nguồn tải, chỉ lấy code và link từ cleanyour.tv và repo chính thức Gathin23/cleanyourtv. Hai tên miền cleanyourtv.com và clean-your-tv.net không thuộc dự án, và dự án không phát hành app chính thức nào trên store. Nguyên tắc an toàn xuyên suốt: làm theo từng batch nhỏ, giữ bản ghi restore, không tắt package ngoài danh sách đã kiểm chứng.

Hiệu năng và khả năng mở rộng: chỉ nói khi có dữ liệu

Phần này mình chưa chạy thử, chỉ đối chiếu tài liệu, nên bài viết không đưa ra con số tốc độ hay RAM nào. Màn hình chính nhẹ hơn có thể giúp cảm giác dùng tivi nhanh hơn, nhưng đó là suy luận, không phải kết quả đo, và hiệu quả thực tế phụ thuộc vào từng model, lượng RAM và bản firmware. Khả năng mở rộng cũng vậy: thực tế là làm theo từng tivi, không có cơ chế quản lý tập trung, nên đừng lập kế hoạch triển khai hàng chục tivi như thể đây là một hệ thống quản lý fleet.

So sánh CleanYourTV với các phương án cùng phạm vi

Tiêu chí so sánh: có thay launcher không, gỡ hay chỉ disable, có danh sách theo model không, có hoàn tác một lệnh không, có kiểm tra drift sau firmware không, có cần root không, và hỗ trợ nền tảng nào.

Phương ánThay launcherGỡ hay disableDanh sách theo modelHoàn tác một lệnhKiểm tra driftCần root
CleanYourTVCóChỉ disableCóCóCó, —fixKhông
Bài prompt-only cobanov/tvKhôngChỉ disableTham khảoKhôngKhôngKhông
ADB thủ côngKhôngChỉ disableTự rà soátTự ghi chépKhôngKhông
App cộng đồng độc lậpKhôngChỉ disableDùng chungTùy appKhôngKhông
Launcher bên thứ baCóKhông dọn app hệ thốngKhôngChỉ đổi HomeKhôngKhông

Theo mình, CleanYourTV thắng ở tính lặp lại, hoàn tác và launcher tích hợp, thua ở phạm vi nền tảng và ở việc không gỡ thật app. Bài prompt-only linh hoạt hơn cho trường hợp lẻ, ADB thủ công cho kiểm soát tối đa từng lệnh, app cộng đồng tiện khi không có laptop, còn launcher bên thứ ba chỉ giải quyết màn hình chính mà không dọn telemetry hay app rác hệ thống.

Use case thực tế

Gia đình và homelab: một tivi phòng khách sạch quảng cáo

Trường hợp phổ biến nhất là tivi Xiaomi, TCL hoặc Sony dùng hàng ngày ở phòng khách. Sau khi dọn, người nhà mở tivi là thấy ngay app mình cần, không còn hàng gợi ý chen ngang. Giữ lại bản ghi restore trên máy tính trong nhà, để khi firmware cập nhật làm mất hiệu lực dọn dẹp, chỉ cần chạy check.py --fix thay vì nhớ lại mình đã tắt những gì.

Quản trị IT và văn phòng: vài tivi trình chiếu, signage đơn giản

Với vài tivi cùng model ở phòng họp hay sảnh, cùng một danh sách đã kiểm chứng giúp trạng thái các tivi nhất quán. Giới hạn cần nhớ: mỗi tivi vẫn cần một phiên ADB riêng và phải tắt ADB sau đó, nên cách này phù hợp với quy mô nhỏ, không thay thế giải pháp quản lý thiết bị tập trung nếu bạn cần giám sát liên tục.

Người dùng nâng cao: tivi làm màn hình phụ cho workflow AI/DevOps

Một màn hình chính tối giản, ít phân tâm, vào nhanh đúng app cần thiết cũng có giá trị với người dùng tivi làm màn hình phụ. Nhưng cần nói rõ: đây là dọn dẹp phía client, không biến tivi thành máy chủ hay hạ tầng chạy AI. Đừng kỳ vọng tivi sau khi debloat sẽ chạy được workload mà phần cứng của nó không đủ sức gánh.

Kết luận: ai nên dùng, ai không, bước tiếp theo

CleanYourTV phù hợp nhất với chủ tivi Android TV hoặc Google TV có model nằm trong danh sách, muốn màn hình chính sạch và chấp nhận quy trình ADB kèm hoàn tác. Nó không phù hợp với tivi Samsung, LG, Roku, Vizio hay Hisense VIDAA, với người dùng Fire TV muốn thay launcher, và với người muốn gỡ hẳn app để lấy lại dung lượng. Bước tiếp theo rất cụ thể: kiểm tra model tại cleanyour.tv/tvs, clone repo chính thức, chạy --probe trước khi thay đổi gì, làm theo từng batch nhỏ, và cuối cùng tắt ADB rồi xác minh bằng adb-closed.py. Nếu model của bạn chưa có danh sách, hãy coi đó là tín hiệu dừng lại và rà soát kỹ, thay vì chạy danh sách của model khác cho nhanh.

Bài học rút ra

  1. Kiểm chứng model trước khi chạy bất kỳ lệnh nào, vì danh sách sai model là nguồn rủi ro lớn nhất, không phải lệnh ADB.
  2. Disable không phải uninstall: firmware cập nhật sẽ hoàn tác dọn dẹp, nên vòng kiểm tra check.py --fix quan trọng ngang với lần dọn đầu tiên.
  3. Chốt an toàn Home-app quan trọng hơn tốc độ dọn: launcher mới phải trả lời HOME trước khi launcher gốc bị vô hiệu hóa, nếu không tivi có thể rơi vào trạng thái không có màn hình chính.
  4. ADB mở là rủi ro lớn nhất trong toàn bộ quy trình, lớn hơn bất kỳ package nào bạn tắt, nên đóng và xác minh ngay sau phiên làm việc.
  5. Danh sách theo model mới là giá trị cốt lõi của CleanYourTV, không phải câu lệnh ADB: lệnh thì ai cũng gõ được, còn danh sách đã kiểm chứng và bản ghi hoàn tác mới là thứ giúp việc dọn dẹp lặp lại được an toàn.

Phạm vi xác minh

Ngày kiểm tra: 2026-11-04. Nội dung đã xác minh trực tiếp từ README và repo chính thức: các lệnh cài đặt và thăm dò, yêu cầu JDK 17–22 và SDK platform 34, cơ chế sao lưu và hoàn tác qua ~/.cleanyourtv/, gotcha setupwraith trên Google TV, và danh sách nền tảng không hỗ trợ. Hành vi mặc định gồm vô hiệu hóa bằng pm disable-user và giữ launcher sau restore; đổi theme và build bằng Docker là lựa chọn opt-in; các con số model, hãng, ngôn ngữ và bài báo theo dự án công bố thuộc dạng số liệu chưa xác minh độc lập. Các con số cấu hình như launcher 572 KB và SDK 34 không phải benchmark. Nội dung chưa kiểm tra: bài viết không cài đặt, chạy hay đo hiệu năng trên tivi thật, nên hiệu quả RAM và tốc độ trên từng model cụ thể vẫn chưa được xác minh.

Tham khảo


Bình luận

Bình luận được duyệt trước khi hiển thị.

Đang tải bình luận…

Để lại bình luận