7 điểm bởi GN⁺ 2026-02-26 | 2 bình luận | Chia sẻ qua WhatsApp
  • Cải tạo Kindle Touch thế hệ 4 đời cũ thành bảng điều khiển e-ink cập nhật thời gian xe buýt NJ Transit đến mỗi phút
  • Thiết lập môi trường chạy ứng dụng tùy biến thông qua jailbreak, KUAL, MRPI, cấu hình SSH, rồi tạo ảnh trên máy chủ nền Node để hiển thị trên Kindle
  • Máy chủ lấy dữ liệu xe buýt qua GraphQL API, định dạng thành HTML, sau đó dùng wkhtmltoimage để tạo PNG cho Kindle tải định kỳ
  • Tự tạo ứng dụng KUAL để có thể thoát dashboard bằng nút menu, đồng thời dùng bash traprtcwake để quản lý nguồn và điều khiển tự động làm mới
  • Thời lượng pin khoảng 5 ngày và vẫn còn dư địa cải thiện hiện tượng lưu ảnh màn hình, cho thấy tiềm năng dùng màn hình e-ink cho thông tin thời gian thực

Biến Kindle thành màn hình hiển thị thông tin xe buýt đến

  • Cải tạo Kindle Touch thế hệ 4 thành bảng hiển thị thông tin xe buýt đến theo thời gian thực
    • Làm mới màn hình mỗi phút, và có thể thoát chế độ dashboard bằng nút menu
    • Tái tạo miễn phí tính năng tương tự sản phẩm thương mại TRMNL

1. Jailbreak Kindle

  • Kiểm tra phiên bản firmware của Kindle, tải file tar phù hợp với phiên bản đó để thực hiện quy trình jailbreak
  • Sau khi thành công, tiếp tục sang bước cài KUALMRPI

2. Cài KUAL và MRPI

  • KUAL được dùng làm trình khởi chạy ứng dụng tùy biến, MRPI là công cụ cài ứng dụng
  • Trước khi cài, bắt buộc phải thực hiện thiết lập Hotfix
  • Sau khi cài xong, vô hiệu hóa cập nhật OTA để chặn cập nhật tự động

3. Cấu hình SSH

  • Có thể SSH vào Kindle thông qua tiện ích mở rộng USBNetwork
  • Tham khảo hướng dẫn trên blog bên ngoài để thiết lập kết nối SSH qua USB
  • Khi kết nối thành công, Kindle sẽ hiện như một thiết bị mới trong tab mạng của máy tính

4. Dựng máy chủ và tạo ảnh

  • Dùng NJ Transit GraphQL API để lấy thông tin xe buýt đến
    • Thu thập dữ liệu như tuyến xe, thời gian đến, mức độ đông đúc bằng truy vấn getBusArrivalsByStopID
  • Dùng wkhtmltoimage thay cho puppeteer để chuyển HTML thành PNG
    • Máy chủ tạo ảnh mới mỗi 3 phút và Kindle sẽ yêu cầu ảnh đó
    • Mã liên quan được công khai trong kho GitHub kindle-hax/server
  • Điều chỉnh xoay và căn ảnh để khớp với độ phân giải màn hình Kindle (ví dụ: 600x800)
    • Dùng transform: rotate(90deg) translateX(-100px) translateY(-100px); để hiển thị theo chiều dọc

5. Tạo ứng dụng KUAL

  • Tạo tiện ích mở rộng KUAL tùy biến để điều khiển bắt đầu/kết thúc dashboard
    • Đặt thư mục trong /mnt/us/extensions/ để menu ‘Start dashboard’ xuất hiện trong KUAL
  • Script start.sh duy trì chạy ổn định bằng cách bỏ qua tín hiệu (trap '' HUP, trap '' TERM)
    • Hàm refresh_screen() tải ảnh từ máy chủ rồi hiển thị bằng lệnh eips
    • Hiển thị ngày tháng, trạng thái Wi‑Fi và dung lượng pin ở phía trên
  • Khi evtest phát hiện đầu vào nút menu (code 102 (Home), value 1) thì chạy stop.sh
    • Thực hiện thoát dashboard và khởi động lại giao diện Kindle

6. Kết quả chạy thực tế và điểm cần cải thiện

  • Pin dùng được khoảng 5 ngày, nếu tắt nguồn vào ban đêm có thể kéo dài thêm 2 ngày
  • Vấn đề lưu ảnh màn hình (color bleeding) có thể được cải thiện bằng nháy đen trắng hoàn toàn
  • Đang được sử dụng hằng ngày, đồng thời cho thấy khả năng mở rộng để hiển thị lịch, thời tiết, việc cần làm và nhiều thông tin khác

2 bình luận

 
xguru 2026-02-26

Tôi cũng недавно làm một việc tương tự, và nếu bạn không thấy thanh URL ở phía trên quá vướng mắt thì cứ tải trực tiếp trang web là được.
Kindle về cơ bản có thể truy cập URL trong trình duyệt web, nên chỉ cần mở dashboard từ đó.
Ở công ty thì dùng Kindle, ở nhà thì dùng Paperwhite đời cũ để tải cùng một trang, nên cũng khá là cross-platform haha

Tất nhiên, để Kindle chạy ở chế độ luôn bật thì vẫn cần root hoặc làm gì đó tương tự.
Paperwhite thì không cần root đến mức đó, chỉ cần mở kết nối adb rồi từ đó tắt screensaver là được.

 
GN⁺ 2026-02-26
Bình luận trên Hacker News
  • Với tư cách là người từng làm việc về mức tiêu thụ điện của Kindle, nguồn ngốn điện lớn nhất là kết nối WiFi
    Vì WiFi phải định kỳ phản hồi với AP để không bị rớt kết nối
    Tôi nhớ là khi tắt WiFi thì khoảng 700uA, còn khi bật thì khoảng 1.5mA
    Khi đổi trang, mức tiêu thụ điện tăng vọt lên hàng trăm mA trong chốc lát, và để giảm hiện tượng ghosting, cứ sau một số trang nhất định lại có một lần làm tươi toàn màn hình

    • Tôi đã tháo pin ra và cấp 5V qua diode vào cổng USB của Kindle
      Cần một nguồn điện có thể cấp tức thời khoảng 1.5A, và tôi dùng một hub USB có nguồn riêng cũ nối với Raspberry Pi để điều khiển qua SSH, nhờ vậy thiết bị chạy ổn định nhiều tháng mà không cần WiFi
    • RM2 của tôi hoàn toàn không kết nối WiFi mà vẫn dùng được vài tháng không cần sạc
      Tần suất sử dụng dưới 30 lần mỗi tháng, nhưng khi tắt WiFi thì hiệu suất pin tốt đến mức đáng kinh ngạc
      Tôi chưa mod chiếc Paperwhite Kindle, nhưng ít nhất cũng sẽ bỏ quảng cáo ở màn hình khóa
    • Tôi định thử thời lượng pin bằng cách tắt WiFi và tăng chu kỳ làm tươi lên 2 phút
      Giờ thì tôi đã thực sự hiểu vì sao pin ở chế độ máy bay lại lâu hết
    • Tôi tự hỏi nếu gắn pin mặt trời silicon vô định hình quanh Kindle thì có thể khỏi cần sạc mỗi 5 ngày hay không
  • Tôi dùng một cách đơn giản hơn
    Sau khi Jailbreak, tôi SSH vào và tạo hai script chạy mỗi phút và mỗi 30 phút
    Cả hai script đều hiển thị cùng một ảnh, nhưng script 30 phút thì thêm một lần làm tươi toàn bộ
    Từ Raspberry Pi, tôi chuyển ảnh bằng rsync, còn script Python lấy dữ liệu chất lượng không khí từ MySQL rồi ghép thành ảnh
    Kindle chỉ làm nhiệm vụ hiển thị ảnh nên hoạt động rất ổn định

    • Tôi đã bật cười khi thấy nói là “cách đơn giản hơn” mà lại nhắc tới rsync, Python, MySQL
    • Nếu có một màn hình eInk chỉ đơn giản là nhận bitmap rồi hiển thị thì có lẽ đã đủ cho rất nhiều mục đích
      Chỉ cần hỗ trợ kết nối an toàn như TLS là được
    • Tôi cũng làm tương tự, Jailbreak Kindle để đọc ePub trên xe buýt rồi hỏi Siri chuyến xe buýt tiếp theo
    • Thật sự rất thỏa mãn khi giải quyết vấn đề chỉ bằng hai script đơn giản thay vì framework phức tạp
  • Hack Kindle là một việc cực kỳ thú vị
    Trên eBay có thể kiếm Kindle đời cũ với giá 15~20 euro, và năm ngoái tôi cũng đã rất vui khi thử nghiệm điều tương tự
    Tôi có viết chi tiết quá trình trong bài blog của mình

    • Trên AliExpress có thể mua bo e-ink chạy ESP32 tên là Xteink4
      Kích thước nhỏ nhưng nếu nạp firmware Crosspoint thì có thể dùng như một máy đọc e-ink di động
      Video YouTube, Crosspoint GitHub
    • Nếu thấy reverse engineering quá nặng, cũng có màn hình e-ink cắm vào cổng DSI của Raspberry Pi
      Giá hơi cao hơn một chút, nhưng có thể là sản phẩm tái sử dụng từ màn hình Kindle
    • Thật thú vị khi xem người khác đạt cùng một mục tiêu bằng cách khác
      Bài viết này khiến tôi muốn thử nghiệm thêm với các nền tảng như Cloudflare Workers
    • Tôi tự hỏi liệu có thể bắt đầu Jailbreak ngay hay ban đầu vẫn cần liên kết với tài khoản Amazon khi thiết lập
  • Tôi đã biến một chiếc Kindle cũ thành khung ảnh do AI tạo ra
    Cứ vài giờ lại tạo một bức ảnh mới, và prompt có thể gồm thời tiết, động vật, quốc gia, tiêu đề tin tức, v.v.
    Toàn bộ xử lý được thực hiện cục bộ trên máy chủ ollama + stable-diffusion-webui ở nhà
    Nhưng ảnh dựa trên tin tức thì quá u ám, nên tôi yêu cầu AI chuyển sang tông tích cực
    Ngày mưa thì trong tranh cũng mưa, mùa đông thì có tuyết rơi
    Pin cũng dùng được vài tuần, và tôi đã sửa Online Screensaver extension để tự chuyển sang chế độ máy bay

    • Dùng nhận dạng giọng nói để trực quan hóa nội dung hội thoại thành hình ảnh chắc cũng sẽ rất thú vị
    • e-ink là một chất liệu kỳ lạ nhưng rất hợp với nghệ thuật tạo sinh
  • Phiên bản dashboard Kindle do tôi làm được công khai trên GitHub
    Nó hiển thị thời tiết địa phương và thông tin nhạc từ media server
    Vấn đề ghosting trên màn hình có thể giải quyết bằng cách làm tươi toàn bộ định kỳ với lệnh eips -f

    • Tôi rất ấn tượng khi thấy nó được viết bằng Rust
      Đây là lần đầu tiên tôi nghĩ rằng mình muốn học Rust
  • Ở Queensland, Australia đang vận hành bảng thông tin trạm xe buýt e-paper chạy bằng năng lượng mặt trời
    Nó lớn hơn Kindle rất nhiều, nhưng nguyên lý thì tương tự
    Giới thiệu dự án, video demo

  • Dự án này làm tôi nhớ tới dự án SystemSix

    • Quá đẹp. Tôi cũng muốn thử làm một giá đỡ tùy chỉnh
  • Dạo này có vẻ ai cũng làm kiểu dự án mod Kindle như thế này
    Tôi cũng đã mod một chiếc K4NT để làm máy chủ hiển thị lịch gia đình
    Có nhờ AI hỗ trợ một chút, rồi thêm miếng chèn in 3D vào khung ảnh Ikea và gắn pin dự phòng MagSafe
    Cứ 5 ngày chỉ cần bấm nút nguồn một lần, và tôi dự định sẽ thay pin bên trong
    Trong môi trường của tôi thì kết nối có dây là không thể

  • Nếu tắt mạng giữa các lần làm tươi thì thời lượng pin chắc chắn tăng lên
    Tôi đã chặn cập nhật từ 10 giờ đêm đến 6 giờ sáng
    Trên GitHub có rất nhiều script tiết kiệm pin
    Trước đây tôi cũng từng làm một bộ hiển thị giao thông công cộng dựa trên GTFS bằng Raspberry Pi Zero + e-ink 2 inch
    Bài viết về dashboard Kindle, dự án Transit Pi

    • Ý tưởng dashboard hiển thị thời gian còn lại của máy giặt cùng với biểu tượng Pokémon quá dễ thương
      Kiểu trực quan hóa thiết bị gia dụng thông minh như vậy thật sự rất hấp dẫn
  • Tôi thích dùng Kindle như một màn hình đơn mục đích
    Thậm chí tôi còn thích Kindle Fire màn hình LCD hơn eInk
    Chuyển sang chế độ nhà phát triển thì có thể giữ một trang web luôn mở và dùng mà không có quảng cáo
    Kindle Fire HD10 có thể kiếm được với giá khoảng 40 USD

    • Cảm ơn vì thông tin về Kindle Fire
      LCD không bị ghosting và đọc được trong bóng tối là một nâng cấp tuyệt vời cho mục đích làm dashboard