2 poin oleh GN⁺ 2024-08-05 | 1 komentar | Bagikan ke WhatsApp
  • Di Kindle Paperwhite 3, dibuat demo monitor e-ink 3,5fps dengan cara menangkap layar macOS lalu mengirim dan menampilkannya
  • Di Kindle, dijalankan server listener Go yang menerima gambar di port 8000, lalu JPG yang diterima digambar ke layar memakai utilitas bawaan eips
  • Di macOS, screencapture, ImageMagick, dan netcat digabungkan untuk menangani penangkapan layar, konversi, dan transfer via usbnet
  • Karena strukturnya mengirim seluruh JPG pada setiap frame, pada layar dengan perubahan kecil seperti editor teks terjadi pemborosan transfer yang besar dan masih banyak ruang untuk perbaikan
  • Ini menunjukkan bahwa tanpa codec khusus atau implementasi VNC, eksperimen monitor sekunder e-ink bisa dibuat cepat hanya dengan menggabungkan alat yang sudah ada

Jailbreak dan memperoleh root shell

  • Langkah pertama adalah melakukan jailbreak pada Kindle agar bisa mengakses root shell dengan cara apa pun
  • Materi terkait bisa ditemukan di mobileread.com, dan petunjuknya dapat merujuk ke thread LanguageBreak
  • Pembuat implementasi tidak mengikuti petunjuk LanguageBreak secara persis, tetapi memanfaatkan repositori GitHub LanguageBreak untuk membantu debugging
  • Syarat yang lebih penting daripada metode jailbreak itu sendiri adalah mendapatkan root shell di Kindle

Server listener Kindle dan output eips

  • Di sisi Kindle, dibuat program Go yang menerima file di port 8000
  • Listener menyimpan JPG yang diterima lalu memanggil utilitas output layar bawaan Kindle, eips
  • Alur contohnya:
    • Program Go menerima file JPG
    • Menyimpannya ke /tmp/img.jpg
    • Menampilkan gambar ke layar dengan perintah berikut
eips -g /tmp/img.jpg -w gc16 -x 128 -y 0
  • Perintah ini menampilkan gambar dengan partial update
  • Full update tidak memberikan hasil yang baik, dan arti flag eips bisa dilihat di wiki eips
  • Sebelum frame pertama, layar bisa dibersihkan dengan eips -c
  • Kode sumber Go-nya hilang, tetapi kodenya sederhana, kurang dari 30 baris

Penangkapan layar macOS dan konversi gambar

  • Di macOS, layar ditangkap berulang kali dengan screencapture lalu disimpan sebagai file PNG
  • Gambar hasil tangkapan dirotasi, di-resize, dan diubah ke grayscale agar sesuai dengan layar Kindle menggunakan ImageMagick
  • JPG yang sudah dikonversi kemudian dikirim ke server listener Kindle melalui usbnet dengan netcat
/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 menangkap layar ke /tmp/orig.png
  • convert memutar gambar 270 derajat, mengubah ukurannya ke 810x1448, lalu mengonversinya menjadi JPG grayscale 8-bit dengan 256 warna
  • nc mengirim /tmp/gray.jpg yang sudah dikonversi ke 192.168.15.244:8000
  • Resolusi perlu disesuaikan dengan perangkat Kindle yang digunakan, dan port juga harus cocok dengan pengaturan server listener Kindle

Batasan performa dan kegunaan

  • Implementasi ini adalah hack cepat yang dibuat untuk iseng pada malam sebelumnya, sehingga performa dan kegunaannya masih sangat bisa ditingkatkan
  • Mengirim seluruh file JPG pada setiap frame sangat boros
  • Perubahan antar-frame berurutan umumnya kecil dan kemungkinan mudah dikompresi
    • Terutama pada penggunaan seperti editor teks, saat hanya sebagian layar yang berubah, karakteristik ini bisa makin menonjol
  • Bahkan tanpa membuat codec seperti h.264 atau protokol seperti VNC dari nol, tampaknya masih mungkin melakukan peningkatan cepat hanya dengan alat yang sudah tersedia

Referensi

1 komentar

 
GN⁺ 2024-08-05
Komentar Hacker News
  • Akan jauh lebih menarik kalau ia membagikan cara melakukannya dan mempostingnya di tempat yang bukan platform untuk tulisan pendek

    • Sekarang saya sedang cepat-cepat menulis GitHub gist, dan akan menaruh tautannya di sini dalam beberapa menit
      Edit: https://gist.github.com/adtac/eb639d3c707b55a28f0ee9a420aa7e...
    • Kalau saya mungkin akan mengatakannya lebih kasar, tapi ini disampaikan cukup konstruktif. Saya benar-benar tidak suka memposting tulisan panjang di X/Twitter
      Sebagai tambahan bagi yang belum tahu, jika membalas tweet dengan @threadreaderapp unroll, Anda bisa mendapatkan dokumen yang sudah disusun ulang. Bot itu hanya membalas langsung kepada Anda setelah proses unroll selesai
    • Menarik bahwa HN dilihat sebagai platform untuk tulisan pendek
  • Saya pernah mencoba input HDMI untuk proyek serupa
    https://hackaday.com/2021/01/08/old-kindle-shows-hdmi-video-...
    Jadi saya membuat OK Monitor: https://barwap.com/projects/okmonitor/

    • Sebagai catatan, kalau ada versi produk jadi yang langsung berfungsi, saya mau membayar untuk membelinya
      Saya tidak melihatnya punya potensi bisnis. Sepertinya omzetnya hanya di kisaran ribuan hingga puluhan ribu dolar, jadi berapa pun margin yang dipasang, sulit untuk menutup lebih dari waktu atau biaya yang dikeluarkan. Meski begitu, dalam proyek hobi saya kadang melihat orang melakukannya seperti itu demi dampak
      Saya ingin ada display e-ink nirkabel untuk komputer, idealnya dalam bentuk dongle USB-C yang menerima video dan daya sekaligus. HDMI + daya USB juga tidak masalah
  • Selama beberapa hari terakhir saya menguji Android + Kaleido3 sebagai perangkat serbaguna, dan juga mencoba Termux-X11
    Kaleido3 cukup layak dipakai. Berkat waveform terbaru dan algoritma dithering yang tepat, menonton video pun memungkinkan dengan kompromi terbatas, dan frame rate-nya juga tinggi. Coding juga cukup bisa dilakukan, dengan compiler dan interpreter disediakan oleh Termux
    Dengan Termux-X11, Anda bisa menjalankan Linux desktop secara native di perangkat Android. Jadi tanpa harus memakai e-ink sebagai bagian dari perangkat monitor, Anda juga bisa langsung memanfaatkannya sebagai layar komputer aktif yang tertanam di tablet

  • Jika ingin melakukan jailbreak Kindle, sebaiknya mulai dari forum mobileread

  • Apakah display e-ink suatu saat bisa menjadi murah? Rasanya paten-paten dasarnya sudah waktunya kedaluwarsa

    • Produk pesaing pun masih cukup mahal. Display e-paper yang saya pakai untuk kalender digital saya setahu saya bukan produk E Ink, tetapi kalau beli satuan harganya sekitar 50 euro: https://www.waveshare.com/7.5inch-e-paper-hat.htm
      Itu komponen biaya terbesar di kalender saya, dan pada dasarnya memaksa kisaran harganya: https://shop.invisible-computers.com/products/invisible-cale...
    • https://news.ycombinator.com/item?id=26143779
    • Paten tidak terlalu berpengaruh. Alasan E Ink mahal adalah karena itu produk ceruk berskala kecil. Layar LCD diproduksi miliaran unit setiap kuartal, dan besar kemungkinan tiap orang memiliki beberapa perangkat yang memakai LCD
      Sebagian besar hal yang dilakukan E Ink bisa digantikan oleh LCD, dan karena lebih mahal daripada LCD, tidak banyak tempat yang memang ingin menggunakannya
      “Paten” lebih mirip teori konspirasi yang muncul tanpa dasar kuat. E Ink punya produk pesaing, misalnya layar DES/Display Electronic Slurry. Kalau E Ink Corp mematok harga seenaknya, GoodDisplay pasti sudah merebut pasarnya
      Tepatnya, keberadaan paten E Ink bukanlah teori konspirasi. Sebagian sudah kedaluwarsa, dan E Ink Corp juga terus mendaftarkan paten baru sambil berinovasi. Paten LCD pun sangat banyak. Bagian yang konspiratif adalah klaim bahwa paten menyebabkan kenaikan dan tingginya harga, sehingga menghambat adopsi teknologinya
  • Kenapa sampai perlu jailbreak? Bukankah bisa melakukan streaming screenshot desktop lewat browser bawaan Kindle?

    • Itu memang jauh lebih sederhana. Namun setiap frame harus melewati jaringan → DOM → memori aplikasi browser → framebuffer, jadi saya ragu apakah browsernya cukup kuat untuk menangani frame rate yang layak dipakai
      Browser Kindle bahkan nyaris tidak sanggup mengikuti Kindle Store atau Goodreads, tetapi saya akan senang jika terbukti sebaliknya. Kalau begitu, implementasinya akan jauh lebih mudah di Kindle baru dalam kondisi bawaan
  • Isi di GitHub: “Sayangnya saya kehilangan source code Go-nya”

    • Lalu dilanjutkan dengan “meski begitu, kodenya cukup sederhana dan kurang dari 30 baris
      Kalau memang sesederhana itu, justru aneh bahwa ia tidak langsung menulis ulang dan menambahkannya ke GitHub
  • Agar mudah melakukan ini, gunakan aplikasi Superdisplay di Boox reader

  • Ia tidak menjawab pertanyaan paling penting: apakah layak dicoba?

    • Masih terlalu dini untuk menilai. Sebagai monitor utama tidak berguna, tetapi sebagai monitor sekunder bagus
      Dalam bentuknya sekarang, frame rate-nya bagus tetapi latensinya buruk sekali. Jadi pengalaman mengetik jelek, tetapi ada banyak penggunaan yang tidak membutuhkan pengetikan
      Bahkan untuk kasus seperti jendela chat, ketika umpan balik pengetikan berlatensi rendah penting, kotak input teks bisa diletakkan di monitor LCD, sementara riwayat chat yang sebagian besar statis ditampilkan di Kindle. Untuk sampai ke sana masih perlu lebih banyak pekerjaan, tetapi untuk saat ini ini adalah awal yang bagus