{"id":13772167,"url":"https://github.com/merovius/srvfb","last_synced_at":"2026-01-26T21:46:44.731Z","repository":{"id":56475828,"uuid":"160181609","full_name":"Merovius/srvfb","owner":"Merovius","description":"Stream a framebuffer device over HTTP","archived":false,"fork":false,"pushed_at":"2023-10-03T14:14:32.000Z","size":45,"stargazers_count":242,"open_issues_count":8,"forks_count":20,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-13T03:32:28.274Z","etag":null,"topics":["golang","remarkable-tablet"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Merovius.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-12-03T11:37:53.000Z","updated_at":"2025-02-25T21:27:23.000Z","dependencies_parsed_at":"2024-01-06T21:51:36.740Z","dependency_job_id":"8b3620e5-4713-4713-8c9f-836c088cf65f","html_url":"https://github.com/Merovius/srvfb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Merovius%2Fsrvfb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Merovius%2Fsrvfb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Merovius%2Fsrvfb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Merovius%2Fsrvfb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Merovius","download_url":"https://codeload.github.com/Merovius/srvfb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253518941,"owners_count":21921074,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","remarkable-tablet"],"created_at":"2024-08-03T17:01:00.845Z","updated_at":"2026-01-26T21:46:44.666Z","avatar_url":"https://github.com/Merovius.png","language":"Go","readme":"# srvfb - Stream framebuffer content over HTTP\n\nThis repository contains a small webserver that can serve the contents of a\nlinux framebuffer device as video over HTTP. The video is encoded as a series\nof PNGs, which are served in a `multipart/x-mixed-replace` stream. The primary\nuse case is to stream a [reMarkable][reMarkable] screen to a computer and share\nit from there via video-conferencing or capturing it. For that reason, there is\nalso a proxy-mode, which streams the frames as raw, uncompressed data from the\nremarkable and can then do the png-encoding on a more powerful machine.\nWhithout that, the framerate is one or two frames per second, which might not\nbe acceptable (it might be, though).\n\nThis should be considered a tech demo in the current state. The code is not\nparticularly clean, it's not in any way secured, probably not very efficient\nand it's taylored specifically to the reMarkable (e.g. it can only stream\n16-bit grayscale images). Feel free to use it and report any bugs you find, but\nI don't make any promises in regards to support or stability and any issues not\ndirectly related to my usecase will likely be closed.\n\nYou can see a short video demonstrating this [in this tweet][video]\n\n**Note: This project is not compatible with the reMarkable 2 and\n[I don't intend to change that](https://github.com/Merovius/srvfb/issues/22).\nIn general, you should consider this project in maintenance mode at best - I\ndon't regularly use it anymore, so I'm not really incentivized to improve it.**\n\n# Installation and usage\n\nYou need a working [Go installation][go] and [ssh-access to your reMarkable][ssh].\nYou can then obtain, install and run the code via\n\n```\ngo get -d -u github.com/Merovius/srvfb\nGOARCH=arm GOARM=7 GOOS=linux go build github.com/Merovius/srvfb\nscp srvfb root@10.11.99.1:\nssh root@10.11.99.1 ./srvfb -device /dev/fb0 -listen :1234\n```\n\nIf you then open `http://10.11.99.1:1234/` in your browser (only Chrome is\ntested) you should see the stream from your reMarkable. To use proxy-mode, run\n(in a separate terminal)\n\n```\ngo build github.com/Merovius/srvfb\n./srvfb -listen localhost:1234 -proxy 10.11.99.1:1234\n```\n\nand open `http://localhost:1234/` in your browser.\n\nOnce you can see the reMarkable screen in your browser (via proxy or not),\nclicking on the image should rotate it by 90°.\n\nThis repository also contains systemd unit files to run `srvfb` automatically\n(using socket activation). For security reasons, it only listens on the USB\nnetwork, though. To use it, run\n\n```\ncd $(go env GOPATH)/src/github.com/Merovius/srvfb\nGOARCH=arm GOOS=linux go build github.com/Merovius/srvfb\nscp srvfb root@10.11.99.1:/usr/bin\nscp contrib/srvfb.service contrib/srvfb.socket root@10.11.99.1:/etc/systemd/system\nssh root@10.11.99.1 systemctl enable --now srvfb.socket\n```\n\n# License\n\nApart where otherwise noted, this code is published under the Apache License,\nVersion 2.0:\n\n```\nCopyright 2018 Axel Wagner\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n\n[reMarkable]: https://remarkable.com/\n[go]: https://golang.org/doc/install\n[ssh]: https://remarkablewiki.com/tech/ssh\n[video]: https://twitter.com/TheMerovius/status/1066455790117097472\n","funding_links":[],"categories":["Screen Sharing/Streaming"],"sub_categories":["Template Builders"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerovius%2Fsrvfb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmerovius%2Fsrvfb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerovius%2Fsrvfb/lists"}