- Đã triển khai bản demo màn hình e-ink 3,5fps bằng cách chụp màn hình macOS rồi truyền và hiển thị trên Kindle Paperwhite 3
- Trên Kindle có một máy chủ listener viết bằng Go nhận ảnh ở cổng 8000, rồi dùng tiện ích tích hợp
eips để vẽ JPG nhận được lên màn hình
- Trên macOS, kết hợp
screencapture, ImageMagick và netcat để xử lý việc chụp màn hình, chuyển đổi ảnh và truyền qua usbnet
- Do kiến trúc gửi toàn bộ JPG ở mỗi frame, với các màn hình ít thay đổi như trình soạn thảo văn bản thì lãng phí băng thông truyền rất lớn và còn nhiều chỗ để cải thiện
- Cho thấy có thể nhanh chóng thử nghiệm màn hình phụ e-ink chỉ bằng cách kết hợp các công cụ sẵn có, không cần codec riêng hay triển khai VNC
Jailbreak và lấy root shell
- Bước đầu tiên là jailbreak Kindle để truy cập được root shell bằng một cách nào đó
- Có thể tìm tài liệu liên quan trên mobileread.com, và tham khảo hướng dẫn trong thread LanguageBreak
- Người triển khai không làm đúng y nguyên theo hướng dẫn LanguageBreak, nhưng đã dùng kho GitHub của LanguageBreak rất hữu ích cho việc debug
- Điều kiện quan trọng hơn bản thân phương pháp jailbreak là lấy được shell root trên Kindle
Máy chủ listener trên Kindle và xuất bằng eips
- Ở phía Kindle, đã viết một chương trình Go nhận file ở cổng 8000
- Listener lưu JPG nhận được, rồi gọi
eips, tiện ích xuất màn hình tích hợp của Kindle
- Luồng ví dụ:
- Chương trình Go nhận file JPG
- Lưu vào
/tmp/img.jpg
- Vẽ lên màn hình bằng lệnh sau
eips -g /tmp/img.jpg -w gc16 -x 128 -y 0
- Lệnh này hiển thị ảnh bằng partial update
- Full update cho kết quả không tốt; có thể xem ý nghĩa các flag của
eips tại wiki eips
- Trước frame đầu tiên, có thể xóa màn hình bằng
eips -c
- Mã nguồn Go đã bị mất, nhưng đó chỉ là đoạn mã đơn giản dưới 30 dòng
Chụp màn hình macOS và chuyển đổi ảnh
- Trên macOS, dùng
screencapture để chụp màn hình lặp lại và lưu thành file PNG
- Ảnh chụp được ImageMagick xoay, resize và chuyển sang grayscale cho khớp với màn hình Kindle
- JPG đã chuyển đổi được gửi bằng
netcat qua usbnet tới máy chủ listener trên Kindle
/usr/sbin/screencapture -C -x /tmp/orig.png
convert /tmp/orig.png -rotate 270 -resize '810x1448!' -type GrayScale -depth 8 -colors 256 /tmp/gray.jpg
cat /tmp/gray.jpg | nc -w 0 192.168.15.244 8000
screencapture -C -x chụp màn hình vào /tmp/orig.png
convert xoay ảnh 270 độ, resize thành 810x1448, rồi chuyển thành JPG grayscale 8-bit, 256 màu
nc gửi /tmp/gray.jpg đã chuyển đổi tới 192.168.15.244:8000
- Cần thay đổi độ phân giải cho phù hợp với thiết bị Kindle đang dùng, và cổng cũng phải khớp với cấu hình máy chủ listener trên Kindle
Giới hạn về hiệu năng và khả năng sử dụng
- Bản triển khai này là một bản hack làm nhanh cho vui vào đêm hôm trước, nên cả hiệu năng lẫn khả năng sử dụng đều còn nhiều chỗ để cải thiện
- Cách gửi toàn bộ file JPG ở mỗi frame rất lãng phí
- Lượng thay đổi giữa các frame liên tiếp phần lớn nhỏ và có thể dễ nén
- Đặc tính này có thể càng nổi bật trong các trường hợp sử dụng chỉ một phần màn hình thay đổi, như trình soạn thảo văn bản
- Ngay cả khi không tạo codec như h.264 hay giao thức như VNC từ đầu, có lẽ vẫn có thể cải thiện nhanh bằng các công cụ đã có sẵn
Tài liệu tham khảo
1 bình luận
Ý kiến trên Hacker News
Sẽ thú vị hơn nhiều nếu tác giả chia sẻ cách làm và đăng ở một nơi không phải nền tảng dành cho bài viết ngắn
Sửa: https://gist.github.com/adtac/eb639d3c707b55a28f0ee9a420aa7e...
Nói thêm cho ai chưa biết: nếu trả lời một tweet bằng
@threadreaderapp unroll, bạn sẽ nhận được tài liệu đã được ghép lại. Bot chỉ trả lời trực tiếp cho chính bạn sau khi hoàn tất việc bung threadTôi từng làm đầu vào HDMI cho một dự án tương tự
https://hackaday.com/2021/01/08/old-kindle-shows-hdmi-video-...
Vì vậy tôi đã làm OK Monitor: https://barwap.com/projects/okmonitor/
Tôi không nghĩ nó có tính kinh doanh. Doanh thu có lẽ chỉ ở mức vài nghìn đến vài chục nghìn USD, nên dù đặt biên lợi nhuận thế nào cũng khó thu hồi nhiều hơn thời gian hoặc chi phí đã bỏ ra. Dù vậy, trong các dự án sở thích, đôi khi tôi thấy người ta làm theo hướng đó để tạo ảnh hưởng
Tôi muốn có một màn hình e-ink không dây cho máy tính, lý tưởng nhất là dạng USB-C dongle nhận cả hình ảnh lẫn nguồn. HDMI + nguồn USB cũng được
Trong vài ngày gần đây tôi đã thử Android + Kaleido3 như một thiết bị đa dụng, và cũng thử Termux-X11
Kaleido3 khá dùng được. Nhờ waveform mới và thuật toán dithering phù hợp, có thể xem video với chỉ một vài thỏa hiệp hạn chế, và frame rate cũng cao. Lập trình cũng hoàn toàn khả thi; compiler và interpreter thì Termux cung cấp
Với Termux-X11, bạn có thể chạy desktop Linux native trên thiết bị Android. Vì vậy không cần dùng e-ink như một phần của thiết bị màn hình, mà cũng có thể tận dụng trực tiếp nó như màn hình máy tính chủ động tích hợp trong tablet
Nếu ai muốn jailbreak Kindle thì nên bắt đầu từ diễn đàn
mobilereadLiệu màn hình e-ink có ngày nào đó rẻ đi không? Tôi nghĩ các bằng sáng chế cơ bản giờ cũng sắp hết hạn rồi
Đây là yếu tố chi phí lớn nhất trong chiếc lịch của tôi, và gần như ép cứng mức giá: https://shop.invisible-computers.com/products/invisible-cale...
Phần lớn những gì E Ink làm đều có thể được thay bằng LCD, mà E Ink lại đắt hơn LCD, nên không có nhiều nơi muốn dùng
“Bằng sáng chế” gần như là thuyết âm mưu được nêu ra mà không có cơ sở rõ ràng. E Ink cũng có sản phẩm cạnh tranh, chẳng hạn màn hình DES/Display Electronic Slurry. Nếu E Ink corp đang chặt chém, GoodDisplay hẳn đã chiếm mất thị trường rồi
Nói chính xác thì việc E Ink có bằng sáng chế không phải là thuyết âm mưu. Một số đã hết hạn, và E Ink corp cũng tiếp tục đăng ký bằng sáng chế mới trong quá trình đổi mới. Bằng sáng chế LCD cũng rất nhiều. Phần mang tính thuyết âm mưu là lập luận rằng bằng sáng chế gây ra việc tăng giá và giá cao, từ đó cản trở việc phổ biến công nghệ
Sao phải jailbreak? Chỉ cần dùng trình duyệt tích hợp của Kindle để stream ảnh chụp màn hình từ desktop là được mà
Trình duyệt Kindle còn barely theo kịp Kindle store hay Goodreads, nhưng tôi rất muốn được chứng minh điều ngược lại. Vì khi đó trên Kindle mới cũng có thể triển khai dễ hơn nhiều ở trạng thái mặc định
Nội dung trên GitHub: “Đáng tiếc là tôi đã làm mất mã nguồn Go”
Nếu đơn giản đến vậy thì việc không viết lại ngay rồi thêm lên GitHub mới là điều hơi lạ
Muốn làm việc này dễ thì chỉ cần dùng app Superdisplay trên máy đọc Boox
Câu hỏi quan trọng nhất vẫn chưa được trả lời: có đáng làm không?
Ở dạng hiện tại, frame rate tốt nhưng độ trễ thì tệ khủng khiếp. Vì vậy trải nghiệm gõ phím kém, nhưng có nhiều mục đích sử dụng không cần gõ
Ngay cả trong trường hợp phản hồi gõ phím độ trễ thấp là quan trọng, như cửa sổ chat, bạn có thể đặt ô nhập văn bản trên màn hình LCD và chỉ hiển thị phần lịch sử chat phần lớn là tĩnh trên Kindle. Để đạt đến mức đó còn cần thêm việc phải làm, nhưng hiện tại đây là một điểm khởi đầu tốt