- 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 trap và rtcwake để 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 KUAL và MRPI
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
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.
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
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
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
Giờ thì tôi đã thực sự hiểu vì sao pin ở chế độ máy bay lại lâu hết
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
Chỉ cần hỗ trợ kết nối an toàn như TLS là được
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
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
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
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 đã 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
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Đâ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
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
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
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