Nhà mình có một cái Kindle Paperwhite đời 11 nằm im trong ngăn kéo cả năm. Đọc sách thì giờ mình đọc trên điện thoại nhiều hơn, bán đi thì tiếc. Trong khi đó sáng nào mình cũng mở điện thoại xem hôm nay có lịch gì, việc gì chưa xong, rồi tiện tay lướt luôn Facebook mất 20 phút.
Thế là mình nghĩ: sao không biến cái Kindle thành một màn hình lịch + việc cần làm, dựng trên bàn, liếc qua là thấy, không cần cầm điện thoại? Màn e-ink không phát sáng, không thông báo, pin để cả tuần. Làm xong thì nó trông như thế này:

Màn hình tự cập nhật mỗi 30 phút, lấy dữ liệu thẳng từ Google Calendar và Google Tasks của mình, kèm thứ ngày, âm lịch, thời tiết và chất lượng không khí (AQI) ở Nha Trang. Việc quá hạn, việc hôm nay được đánh dấu đen cho dễ thấy. Sự kiện sắp tới hiện ở thẻ đen to nhất trên cùng.
Toàn bộ miễn phí, không cần server, không cần để máy tính bật. Mình viết lại các bước dưới đây để ai có Kindle cũ cũng làm được. Code mình để công khai trên GitHub, các bạn chỉ việc sao chép về dùng.
Cách nó hoạt động

Nói gọn: một đoạn script nhỏ trên Google đọc lịch và todo của bạn. Mỗi 30 phút, GitHub (miễn phí) chạy chương trình vẽ ra một tấm ảnh PNG đúng kích thước màn Kindle rồi đăng lên mạng. Kindle chỉ việc thức dậy, bật Wi-Fi vài giây, tải tấm ảnh về, hiển thị, tắt Wi-Fi rồi ngủ tiếp. Vì Kindle không phải tính toán gì nên rất nhẹ pin.
Cần chuẩn bị gì
- Một chiếc Kindle đã jailbreak (mục 1 bên dưới). Mình dùng Kindle Paperwhite 5 (11th gen), màn 1236×1648. Máy khác vẫn làm được nhưng phải chỉnh kích thước ảnh.
- Một tài khoản Google (có Calendar và Tasks), một tài khoản GitHub (miễn phí).
- Máy tính và cáp USB để chép file vào Kindle.
- Khoảng 1–2 tiếng, phần lâu nhất là jailbreak.
Chưa có Kindle? Máy mình dùng trong bài là Kindle Paperwhite 5, xem giá trên Shopee tại đây. Lưu ý chọn bản có quảng cáo (Special Offers) thì mới jailbreak bằng AdBreak được, và hỏi shop firmware trước khi mua. (Link tiếp thị liên kết: bạn mua qua link thì giá không đổi, mình nhận một ít hoa hồng từ Shopee.)
Bước 1 — Jailbreak Kindle
Đây là bước “mở khoá” để Kindle chạy được chương trình của mình. Với các máy đời mới, cách đang dùng được là AdBreak, áp dụng cho Kindle có quảng cáo (Special Offers) chạy firmware 5.18.1 đến 5.18.5. Mình không chép lại từng bước ở đây vì hướng dẫn gốc luôn được cập nhật. Bạn làm theo trang kindlemodding.org/jailbreaking/AdBreak. Vài kinh nghiệm xương máu của mình:
- Vào Settings → Device Info xem firmware trước. Máy mua bản không quảng cáo thì phải bật Special Offers trên trang quản lý thiết bị của Amazon (mình phải đổi tài khoản Amazon sang vùng Mỹ mới bật được).
- Bật Airplane Mode suốt quá trình để Kindle không tự cập nhật firmware và vá mất lỗ hổng.
- Quảng cáo trên Kindle sẽ tự đổi khi có mạng, nên lần đầu mình sửa xong thì bị thay mất, phải làm lại. Cứ bình tĩnh làm lại theo hướng dẫn.
- Jailbreak luôn có rủi ro, bạn tự chịu trách nhiệm với máy của mình nhé.
Bước 2 — Cho Google “xuất” lịch và todo ra (Apps Script)
- Mở script.google.com → New project, đặt tên
Kindle Dashboard. - Xoá code mẫu, dán toàn bộ nội dung file apps_script.gs.
- Đổi dòng
const TOKEN = 'DOI-THANH-CHUOI-BI-MAT';thành một chuỗi bí mật của riêng bạn (chữ + số, dài chút, đừng đưa cho ai). Bấm Save. - Cột bên trái, mục Services → dấu + → chọn Google Tasks API → Add.
- Chọn hàm
testCollect→ Run → cho phép quyền. Google sẽ báo “app chưa được xác minh”, bấm Advanced → Go to Kindle Dashboard (unsafe) → Allow. Không sao đâu, đây là script của chính bạn, chạy trong tài khoản của bạn. Xem Execution log thấy danh sách lịch và việc là đúng. - Deploy → New deployment → chọn loại Web app. Execute as: Me, Who has access: Anyone → Deploy → copy Web app URL.
- Ghép link:
Web app URL+?token=+ chuỗi bí mật ở bước 3. Dán thử vào trình duyệt, thấy ra một đoạn JSON là xong. Ai không có token chỉ nhận được chữforbidden.
Bước 3 — Để GitHub tự vẽ ảnh mỗi 30 phút
- Đăng nhập GitHub, mở github.com/vuminhtra/kindle-dashboard → bấm Fork để sao chép về tài khoản của bạn.
- Trong repo vừa fork: Settings → Secrets and variables → Actions → New repository secret, tạo 2 secret:
DATA_URL= link đã ghép ở bước 2.7 (có cả token).SECRET_PATH= một chuỗi ngẫu nhiên khác, ví dụk8x2p9. Nó nằm trong link ảnh để người lạ khó đoán ra.
Ô Name là tên biến, ô Secret mới là giá trị (lần đầu mình điền ngược 😅).
- Settings → Pages → Source: chọn GitHub Actions.
- Tab Actions: repo fork thì GitHub sẽ hỏi có bật workflow không, bấm đồng ý. Chọn Cập nhật dashboard Kindle → Run workflow, chờ khoảng 1 phút ra dấu tích xanh.
- Mở thử ảnh:
https://<tên-github-của-bạn>.github.io/kindle-dashboard/<SECRET_PATH>/dashboard.png. Ảnh sẽ trông như này (đây là dữ liệu mẫu):

Bước 4 — Cài lên Kindle
- Tải thư mục kindle trong repo về máy (hoặc tải cả repo dạng ZIP: nút Code → Download ZIP).
- Mở
kindle/dashboard/config.shbằng Notepad, sửa dòngIMAGE_URL=thành link ảnh ở bước 3.5. Ở đây cũng chỉnh được số phút làm mới (INTERVAL_MIN) và giờ ngủ đêm (mặc định 23h–6h không cập nhật cho đỡ tốn pin). - Cắm Kindle vào máy tính, chép:
- thư mục
kindle/dashboard→ vào gốc ổ Kindle (thànhKindle\dashboard\) - file
kindle/documents/Dashboard.sh→ vào thư mụcKindle\documents\
- thư mục
- Rút cáp, đảm bảo Kindle đang kết nối Wi-Fi. Trong Thư viện sẽ xuất hiện một “cuốn sách” tên Dashboard Lich & Todo, bấm vào là màn hình chuyển sang dashboard.
- Muốn quay lại dùng Kindle đọc sách: giữ nút nguồn khoảng 40 giây cho máy khởi động lại.
Nếu có gì trục trặc, mở file Kindle\dashboard\log.txt xem nó báo gì.
Tuỳ chỉnh thêm
- Chữ to/nhỏ: trong
render.pytrên GitHub có dòngSCALE = ... "1.3". 1.3 là to hơn 30% so với thiết kế gốc (mình thấy cỡ gốc hơi bé khi để trên bàn), muốn to nữa thì sửa thành 1.4–1.5 rồi Commit. Không cần đụng vào Kindle. - Ẩn bớt lịch: Settings → Secrets and variables → Actions → Variables, tạo biến
DASH_SKIP_CALENDARS= tên lịch muốn ẩn (vd lịch “Ngày lễ”), nhiều lịch thì cách nhau bằng dấu phẩy. - Thời tiết nơi khác: sửa 2 số toạ độ
DASH_LAT/DASH_LONtrongrender.py(mặc định là Nha Trang). Thời tiết lấy từ Open-Meteo, miễn phí, không cần đăng ký. - Màn hình còn bóng mờ ảnh cũ: đặc điểm của e-ink. Sửa
eips -gthànheips -f -gtrongloop.shđể mỗi lần cập nhật màn hình chớp đen một cái, xoá sạch bóng. - Lâu lâu nhớ ghé repo: GitHub tự tắt lịch chạy tự động nếu repo không có hoạt động gì trong 60 ngày. Thấy dashboard đứng giờ thì vào tab Actions bật lại là xong.
Vài lời thật lòng
Thú thật là phần code mình không tự gõ từng dòng. Mình làm cùng AI (Claude): mình nói mình muốn gì, nó viết, mình chạy thử, lỗi thì chụp màn hình gửi lại cho nó sửa. Phần mất công nhất lại không phải code mà là jailbreak và mấy cái lỗi lặt vặt kiểu điền ngược ô secret. Người bình thường không biết lập trình như mình giờ làm được những món đồ chơi kiểu này, chỉ cần chịu ngồi mày mò một buổi tối.
Từ hôm có cái màn hình này, buổi sáng mình liếc một cái là biết hôm nay có gì, mở điện thoại ít hẳn. Nhà ai có Kindle cũ đang đắp chiếu thì thử đi, làm được thì chụp ảnh khoe mình xem với nhé!


