Notável 2: Hacks & Servidor próprio
Neste documento (para fins educativos), poderemos ver como o sistema que o Notável traz pode ser mudado um pouco 2 libertar todas as suas funcionalidades, bem como configurar o nosso próprio servidor na nuvem para sincronizar, Partilha de ecrã, Documentação…
![]() |
![]() |
Como creo que muchos habréis escuchado el dispositivo Remarkable 2 es una pasada para los que nos gusta tomar notas de manera manual. Un dispositivo táctil, de tinta electrónica, que permite tener distintos cuadernos para organizarte como quieras, distintas puntas, grosores… muito, muito completo. Al tacto muy similar al papel, puedes subrayar, mover, copiar… La verdad que el hardware es una pasada, y el ‘problema’ digamos lo tiene el software, que depende que funcionalidades te interesen pues requiere de suscripción anual, y si el precio fuera accesible, pues bueno… La posibilidad de compartir la pantalla, enviar un documento por mail, convertir a OCR lo que se ha escrito…
Para evitar todo esto podremos cambiarle por un lado el sistema y habilitarle las funciones que vienen desbloqueadas, e por outro lado montar o nosso próprio servidor da Remarkable para realizar as funções de armazenamento e sincronização dos nossos cadernos, Observações, livros… além de poder enviar documentos ou partilhar o ecrã, entre outros.
Atualizando o software da Remarkable 2,
![]() |
![]() |
Começamos antes de mais por atualizar o firmware da Remarkable 2 até à versão máxima que encontrarmos que tenha a versão 'hackeada'. Deixo-vos anotados os passos que segui quando a adquiri 1-2 Anos. Neste site encontrarão as instruções de ddvk (Dobrin von Känel) para os hacks e neste outro para o processo de atualização.
Numa VM com Linux descarregamos o repositório do ddvk que permite atualizar a Remarkable 2:
cd /tmp/ git clone https://github.com/ddvk/remarkable-update.git
De aqui nos bajaremos la versión más reciente para nuestra Remarkable 2 y lo guardamos en la carpeta ‘updates’ que habrá creado el paso anterior. Arrancamos ya pues el servicio que ofrece la actualización:
cd remarkable-update python3 serve.py 2.12.2.573 Using hostname, to override use: ./serve.py hostname Device should use: Referências HTTP://OS-XXX-01.openservices.local:8000/ Available updates: {'reMarkable2': ('2.12.2.573', '2.12.2.573_reMarkable2-XnE1EL7ojK-.signed')} Starting fake updater: 8000
En mi caso la Remarkable 2 traía la versión 2.10.4.5 y la vamos a subir a la 2.12.2.573. Ahora vamos a la Remarkable 2, nos logueamos en ella por SSH con root y nuestra contraseña (que la encontraremos en Settings > Ajuda > Copyright and Licenses, debajo de GPLv3 Compliance). Editamos el fichero de configuración de actualización con vim o nano con la URL que nos dió el paso anterior, grabamos y salimos:
vim /usr/share/remarkable/update.conf SERVER=http://OS-XXX-01.openservices.local:8000 :wq
Desde el shell de la Remarkable 2 podemos forçar a actualizar, levantamos el servicio, chequeamos si hay updates y vemos el proceso de actualización:
systemctl start update-engine update_engine_client -check_for_update journalctl -u update-engine -f
Depois disso, reiniciamos y listos para aplicarle el hack!
Cambiando el software al de hacks,
Nada mau, agora que hemos actualizado la Remarkable 2 a uma versão compatível com hacks, pues podemos começar a aplicarlo. Sin miedo, ya que quando acabemos podremos escolher si aplicaremos los cambios o no, tras trastear un pouco com o dispositivo.
Volvemos a loguearnos en la Remarkable 2 com SSH como root y la senha que tendremos ya anotada en un lugar seguro. E nós executamos:
sh -c "$(wget https://raw.githubusercontent.com/ddvk/remarkable-hacks/master/patch.sh -O-)"
Y empezará:
Connecting to raw.githubusercontent.com (185.199.111.133:443) wget: note: TLS certificate validation not implemented writing to stdout - 100% |***********************************************************************************************************************************************************************************************************| 10013 0:00:00 ETA written to stdout Disk space seems to be enough. rM2 Version 2.12.2.573 - patch_31.2.01 Connecting to github.com (140.82.121.4:443) wget: note: TLS certificate validation not implemented Connecting to raw.githubusercontent.com (185.199.109.133:443) saving to '/home/rmhacks/patch_31.2.01' patch_31.2.01 100% |***********************************************************************************************************************************************************************************************************| 88907 0:00:00 ETA '/home/rmhacks/patch_31.2.01' saved Connecting to github.com (140.82.121.4:443) wget: note: TLS certificate validation not implemented Connecting to raw.githubusercontent.com (185.199.110.133:443) saving to '/home/rmhacks/patch.sh' patch.sh 100% |***********************************************************************************************************************************************************************************************************| 10013 0:00:00 ETA '/home/rmhacks/patch.sh' saved Failed to stop rm2fb.service: Unit rm2fb.service not loaded. killall: remarkable-shutdown: no process killed killall: xochitl: no process killed Cleaning up... ********************************************** Trying to start the patched version... You can play around, press CTRL-C when done! ********************************************** Registering exit handlers Reading waveforms from /usr/share/remarkable/320_R400_AF8F11_ED103TC2C5_VB3300-KCD_TC.wbf Running INIT (111 phases) 15:02:22.065 qt.qpa.input evdevtouch: Using device discovery 15:02:22.072 qt.qpa.input evdevtouch: Adding device at /dev/input/event2 15:02:22.072 qt.qpa.input evdevtouch: Using device /dev/input/event2 15:02:22.073 qt.qpa.input evdevtouch: /dev/input/event2: Protocol type B (multi), filtered=no 15:02:22.073 qt.qpa.input evdevtouch: /dev/input/event2: min X: 0 max X: 1403 15:02:22.074 qt.qpa.input evdevtouch: /dev/input/event2: min Y: 0 max Y: 1871 15:02:22.074 qt.qpa.input evdevtouch: /dev/input/event2: min pressure: 0 max pressure: 0 15:02:22.074 qt.qpa.input evdevtouch: /dev/input/event2: device name: pt_mt 15:02:27.521 qt.qpa.input evdevtouch: Updating QInputDeviceManager device count: 1 touch devices, 0 pending handler(s) ^CShutting down... Cleaning up... If everything worked, do you want to make it permanent [N/y]? N Use the /home/rmhacks/xochitl.patched binary if you change your mind / provide it if it segfaulted. Starting the original...
Esto arranca la Remarkable 2 con el hack, podremos parar el proceso con CTR+C cuando queramos y nos preguntará si queremos guardarlo en memoria N/y.
Si N se reinicia con el firmware anterior.
Montando nuestro servidor nube propio,
Nada mau, podemos montar em uma MV ou em uma Raspberry Pi, o em uma NAs… nuestro próprio servidor de Remarkable 2, para o que dizemos antes, almacenar e sincronizar los documentos, a possibilidade de enviar por mail, Partilha de ecrã, etc…
Isto o haremos com outra das utilidades de ddvk, com rmfakecloud, um contenedor de Docker que em um periquete o tendremos corriendo.
Antes de começar, tenemos que crearnos una cuenta en: https (em inglês)://developer.myscript.com y tras ativar la cuenta, crearemos una app en https://developer.myscript.com/dashboard >Cloud recognition > Gerir > Create application (o ir a https://cloud.myscript.com/#/user/applicationList). En mi caso la llamo 'App para rmfakecloud'. La abrimos y > Generate Application Key', y devemos anotar el 'Application Key’ (formato xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) e a Chave HMAC: (mesmo formato).
Numa máquina onde tenhamos Docker, criamos o diretório para os dados e levantamos o contêiner do rmfakecloud, devendo modificar algum dado como podem ver:
sudo mkdir /mnt/data-rmfakecloud sudo docker run -p 3000:3000 -v /mnt/data-rmfakecloud:/data -e JWT_SECRET_KEY='XXXXXXXX' \ -e RMAPI_HWR_APPLICATIONKEY='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx' \ -e RMAPI_HWR_HMAC='xxxxxxxx-xxxx-xxxx-xxxx-' \ -e RM_SMTP_SERVER='mail.meudominio.eso':465' \ -e RM_SMTP_USERNAME='EUA*****@*******io.eso' \ -e RM_SMTP_PASSWORD='senha' \ -e RM_SMTP_FROM='EUA*****@*******io.eso' \ -e RM_SMTP_INSECURE_TLS \ -e RM_SMTP_STARTTLS \ ddvk/rmfakecloud
Levantamos o contêiner e indicamos que inicie sempre:
sudo docker start rmfakecloud sudo docker update --restart unless-stopped rmfakecloud
Abrimos uma página web contra a URL do contêiner no formato http://FQDN_DOCKER:3000 e o primeiro utilizador com quem iniciarmos sessão, será criado.
Vamos para a Remarkable 2 e a partir da shell, a partir de um Putty logados como root executamos:
sh -c "$(wget https://raw.githubusercontent.com/ddvk/rmfakecloud/master/scripts/device/automagic.sh -O-)"
E aparecerá algo como isto:
root@reMarkable:~# sh -c "$(wget https://raw.githubusercontent.com/ddvk/rmfakecloud/master/scripts/device/automagic.sh -O-)" Connecting to raw.githubusercontent.com (185.199.109.133:443) wget: note: TLS certificate validation not implemented writing to stdout - 100% |***********************************************************************************************************************************************************************************************************| 275 0:00:00 ETA escrito no stdout A obter o instalador... A ligar-se a github.com (140.82.121.3:443) wget: note: Validação do certificado TLS não implementada A ligar-se a objects.githubusercontent.com (185.199.108.133:443) a guardar em 'installer.sh' installer.sh 100% |***********************************************************************************************************************************************************************************************************| 2000k 0:00:00 ETA 'installer.sh' guardado A executar o instalador... A extrair binário incorporado... Falha ao parar proxy.service: Unidade proxy.service não carregada. ~/rmfakecloud ~ A gerar chave e crt de CA... A gerar chave privada RSA, 2048 modulo de bits longo (2 primos) .....................................+++++ ...................................................+++++ e é 65537 (0x010001) A gerar chave privada... A gerar chave privada RSA, 2048 modulo de bits longo (2 primos) .....+++++ ................................+++++ e é 65537 (0x010001) A gerar chave pública... a escrever chave RSA A gerar csr e crt... Assinatura ok subject=C = AA, ST = QQ, L = JJ, O = a cultura, CN = *.appspot.com Obtendo Chave Privada da CA Geração concluída! A limpar ligações simbólicas em /etc/ssl/certs... Terminado. A atualizar certificados em /etc/ssl/certs... rehash: aviso: ignorar ca-certificates.crt,não contém exatamente um certificado ou CRL 1 adicionado, 0 removido; Terminado. Executando hooks em /etc/ca-certificates/update.d... Terminado. Insira a sua própria URL de nuvem [Referências HTTP(s)://algumhost:porto] >
Está-nos a ser solicitado que introduzamos a URL com o servidor próprio que acabámos de montar no formato: Referências HTTP://FQDN_DOCKER:3000 e pressionamos Enter, atenção que aqui podemos usar um FQDN público se quisermos que o Remarkable 2 consiga aceder-lhe a partir da Internet. Após pressionar Enter, seguirá…
Definindo sincronização na nuvem para: Referências HTTP://FQDN_DOCKER:3000 Criado link simbólico /etc/systemd/system/multi-user.target.wants/proxy.service → /etc/systemd/system/proxy.service. Aplicação de patch a /etc/hosts A parar xochitl.. A corrigir o estado da sincronização... A iniciar xochitl... ~
En la Remarkable 2 vamos a Settings > Geral > Account > Connect to reMarkable cloud > Ligar > y pedirá un código de estas OT que conseguiremos en http://FQDN_DOCKER:3000/generatecode
Lo introduciremos y listo! Ya nos saldrá nuestra cuenta activada y con el Subscription Plan de tipo 'Connect'! Agora o único recorda que no se actualice sozinha la Remarkable 2, búscalo en los Settings.
Por si no lo conocéis también existe una app de Remarkable para el PC, para o nosso escritorio, para ver os documentos, acceder a la pantalla compartida… para ello deberemos tener en cuenta que el FQDN 'local.appspot.com’ deberá responder contra o nosso contenedor de rmfakecloud o um proxy inverso que montemos em Nginx.
Espero que você tenha achado interessante, la idea de este documento es ver las posibilidades de estos hacks, e de forma alguma fomentar a pirataria ou essas coisas más. Como de costume, desejar-vos que vos corra muito bem, que sejais felizes e comais perdizes!
Vamos ao último… Podem comprar um lápis barato na Amazon, tipo este da STAEDTLER, e fica muito nerd… há alguns com borrachas atrás para apagar diretamente…
Agora sim, um abraço!

















































