- Foi implementada uma demonstração de monitor e-ink a 3,5 fps capturando, transmitindo e exibindo a tela do macOS em um Kindle Paperwhite 3
- No Kindle, há um servidor listener em Go na porta 8000 para receber imagens, e o JPG recebido é desenhado na tela com o utilitário embutido
eips
- No macOS,
screencapture, ImageMagick e netcat são combinados para fazer a captura de tela, a conversão e a transmissão via usbnet
- Como a estrutura envia o JPG inteiro a cada frame, há muito desperdício de transferência em telas com pouca mudança, como editores de texto, e existe bastante espaço para melhorias
- Mostra que é possível criar rapidamente um experimento de monitor auxiliar e-ink apenas combinando ferramentas existentes, sem implementar um codec separado ou VNC
Jailbreak e obtenção de shell root
- O primeiro passo é fazer jailbreak no Kindle e obter acesso a um shell root de alguma forma
- Materiais relacionados podem ser encontrados em mobileread.com, e é possível seguir as instruções da thread do LanguageBreak
- O autor não seguiu exatamente as instruções do LanguageBreak, mas aproveitou bem o repositório GitHub do LanguageBreak para depuração
- Mais importante do que o método de jailbreak em si é conseguir um shell root no Kindle
Servidor listener no Kindle e saída com eips
- No lado do Kindle, foi escrito um programa em Go que recebe arquivos na porta 8000
- O listener salva o JPG recebido e depois chama o utilitário embutido de saída de tela do Kindle, o
eips
- Fluxo de exemplo:
- O programa em Go recebe um arquivo JPG
- Salva em
/tmp/img.jpg
- Exibe a imagem na tela com o comando abaixo
eips -g /tmp/img.jpg -w gc16 -x 128 -y 0
- Esse comando exibe a imagem com partial update
- O full update não deu bons resultados, e o significado das flags do
eips pode ser visto na wiki do eips
- Antes do primeiro frame, é possível limpar a tela com
eips -c
- O código-fonte em Go se perdeu, mas era um código simples com menos de 30 linhas
Captura de tela no macOS e conversão de imagem
- No macOS, a tela é capturada repetidamente com
screencapture e salva como arquivo PNG
- A imagem capturada é rotacionada, redimensionada e convertida para escala de cinza com ImageMagick para se ajustar à tela do Kindle
- O JPG convertido é enviado ao servidor listener do Kindle via usbnet usando
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 captura a tela e salva em /tmp/orig.png
convert gira a imagem em 270 graus, redimensiona para 810x1448 e a converte em um JPG de escala de cinza de 8 bits e 256 cores
nc envia o /tmp/gray.jpg convertido para 192.168.15.244:8000
- A resolução deve ser ajustada de acordo com o modelo de Kindle em uso, e a porta também precisa corresponder à configuração do servidor listener no Kindle
Limites de desempenho e usabilidade
- Esta implementação foi um hack rápido feito por diversão na noite anterior, e ainda há bastante espaço para melhorar tanto desempenho quanto usabilidade
- Enviar o arquivo JPG inteiro a cada frame é bastante ineficiente
- Entre frames consecutivos, a maior parte das mudanças tende a ser pequena e provavelmente fácil de comprimir
- Isso pode ficar ainda mais evidente em usos como editores de texto, em que só partes da tela mudam
- Mesmo sem criar do zero um codec como h.264 ou um protocolo como VNC, parece possível melhorar bastante rapidamente apenas com ferramentas já existentes
Materiais de referência
1 comentários
Comentários do Hacker News
Se tivesse compartilhado como fez isso e publicado em algum lugar que não fosse uma plataforma de textos curtos, teria sido bem mais interessante
Edit: https://gist.github.com/adtac/eb639d3c707b55a28f0ee9a420aa7e...
Para quem não conhece, se você responder a um tweet com
@threadreaderapp unroll, recebe um documento reorganizado. O bot responde em privado só para você depois de terminar de expandir a threadJá fiz um projeto parecido com entrada HDMI
https://hackaday.com/2021/01/08/old-kindle-shows-hdmi-video-...
Então criei o OK Monitor: https://barwap.com/projects/okmonitor/
Não acho que isso tenha viabilidade comercial. Parece algo que geraria de alguns milhares a algumas dezenas de milhares de dólares em receita, então, independentemente da margem, seria difícil recuperar o tempo ou o custo investido. Ainda assim, às vezes vejo projetos de hobby seguirem por esse caminho por causa do impacto
Seria legal ter um display e-ink sem fio para computador e, idealmente, no formato de um dongle USB-C que recebesse vídeo e energia juntos. HDMI + alimentação por USB também serviria
Nos últimos dias testei Android + Kaleido3 em um dispositivo de uso geral e também usei o Termux-X11
O Kaleido3 é bastante utilizável. Graças às formas de onda mais recentes e ao algoritmo de dithering correto, dá até para assistir vídeos com concessões limitadas, e a taxa de quadros é alta. Também foi totalmente viável para programar, e o compilador e o interpretador vieram do Termux
Com o Termux-X11, dá para rodar Linux de desktop nativamente em um dispositivo Android. Assim, em vez de usar e-ink como parte de um dispositivo monitor, você pode aproveitá-lo diretamente como uma tela de computador ativa embutida no tablet
Se alguém quiser fazer jailbreak no Kindle, é melhor começar pelo fórum
mobilereadSerá que os displays e-ink algum dia vão ficar baratos? Parece que as patentes básicas já deveriam estar perto de expirar
É o maior fator de custo no meu calendário e basicamente define a faixa de preço: https://shop.invisible-computers.com/products/invisible-cale...
A maior parte do que a E Ink faz pode ser substituída por LCD e, como custa mais caro que LCD, há poucos motivos para usá-la
“Patentes” chega perto de ser uma teoria da conspiração repetida sem base clara. Há produtos concorrentes à E Ink, como as telas DES/Display Electronic Slurry. Se a E Ink corp estivesse cobrando preços abusivos, a GoodDisplay já teria tomado o mercado
Para ser exato, não é teoria da conspiração dizer que existem patentes da E Ink. Algumas expiraram, e a E Ink corp continua inovando e registrando novas patentes. Também há muitas patentes de LCD. A parte conspiratória é afirmar que as patentes causam aumentos de preço e preços altos e, por isso, impedem a adoção da tecnologia
Por que fazer jailbreak afinal? Não daria para fazer streaming de screenshots pelo navegador embutido do Kindle?
O navegador do Kindle mal consegue acompanhar a Kindle Store ou o Goodreads, mas adoraria estar errado. Isso permitiria fazer algo muito mais facilmente em Kindles novos, no estado padrão
O que foi colocado no GitHub: “infelizmente eu perdi o código-fonte em Go”
Se era tão simples assim, é até estranho não ter reescrito na hora e adicionado ao GitHub
Para fazer isso com facilidade, basta usar um Boox reader com o app Superdisplay
A pergunta mais importante não foi respondida: valeu a pena?
No estado atual, a taxa de quadros é boa, mas a latência é horrível. Então a experiência de digitação é ruim, mas há muitos usos que não exigem digitação
Mesmo em casos como uma janela de chat, em que o feedback de digitação com baixa latência é importante, dá para deixar a caixa de texto em um monitor LCD e mostrar no Kindle só o histórico de chat, que é mais estático. Ainda falta trabalho para chegar lá, mas por enquanto é um bom ponto de partida