{"id":15020597,"url":"https://github.com/pawelkn/framebuffer-animations","last_synced_at":"2025-10-26T04:30:41.478Z","repository":{"id":192601063,"uuid":"687018636","full_name":"pawelkn/framebuffer-animations","owner":"pawelkn","description":"Framebuffer Animations is an open-source project designed to play GIF animations on a raw framebuffer device, primarily intended for use in embedded devices","archived":false,"fork":false,"pushed_at":"2024-03-05T11:49:02.000Z","size":6571,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-31T14:21:52.490Z","etag":null,"topics":["animation","banana-pi","crossplatform","embedded","embedded-systems","framebuffer","gif","gif-animation","raspberry-pi","raspberry-pi-3","rust-lang"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pawelkn.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-04T12:33:46.000Z","updated_at":"2024-03-29T13:26:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"da58154e-327e-40f4-8cb8-f9be71de8929","html_url":"https://github.com/pawelkn/framebuffer-animations","commit_stats":{"total_commits":6,"total_committers":1,"mean_commits":6.0,"dds":0.0,"last_synced_commit":"b0f4d2f5be189935fb9e83ad6a53282a371e19be"},"previous_names":["pawelkn/framebuffer-animations"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pawelkn%2Fframebuffer-animations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pawelkn%2Fframebuffer-animations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pawelkn%2Fframebuffer-animations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pawelkn%2Fframebuffer-animations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pawelkn","download_url":"https://codeload.github.com/pawelkn/framebuffer-animations/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238258953,"owners_count":19442505,"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":["animation","banana-pi","crossplatform","embedded","embedded-systems","framebuffer","gif","gif-animation","raspberry-pi","raspberry-pi-3","rust-lang"],"created_at":"2024-09-24T19:55:19.126Z","updated_at":"2025-10-26T04:30:41.472Z","avatar_url":"https://github.com/pawelkn.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Framebuffer Animations\n\nFramebuffer Animations is an open-source project designed to play GIF animations on a raw framebuffer device, primarily intended for use in embedded devices. It provides a lightweight and efficient solution for rendering animated content on displays connected to embedded systems.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\".github/images/readme-image.jpg\" alt=\"drawing\" style=\"width:640px;\"/\u003e\n\u003c/p\u003e\n\n## Features\n\n* Plays GIF animations on raw framebuffer devices,\n* Lightweight and suitable for resource-constrained environments,\n* The binary has no dependencies,\n* Designed for use in embedded systems,\n* Customizable for different display configurations,\n* Written in Rust for performance and reliability.\n\n## Cross-Compilation\n\nCross-compiling Framebuffer Animations for your target embedded system is straightforward. Here's an example of cross-compilation for The NXP i.MX28 processor with support for the ARMv5TE instruction set.\n\n1. Install the cross-compiler toolchain for your target.\n\n2. Setup a target for Rust:\n\n```bash\nrustup target add armv5te-unknown-linux-gnueabi\n```\n\n3. Clone the repository:\n\n```bash\ngit clone https://github.com/pawelkn/framebuffer-animations.git\n```\n\n4. Create a _.cargo_ subfolder in the project directory.\n\n```bash\ncd framebuffer-animations\nmkdir .cargo\n```\n\n5. Edit _.cargo/config_ file. Set the valid _gcc_ cross-compiler for your target. Set additional compiler flags, if needed. Example file content:\n\n```ini\n[target.armv5te-unknown-linux-gnueabi]\nlinker = \"/home/pawel/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabi-gcc\"\n```\n\n6. Build the project:\n\n```bash\ncargo build --target=armv5te-unknown-linux-gnueabi --release\n```\n\n## Deployment\n\nDeployment of Framebuffer Animations depends on your specific embedded system and framebuffer device. However, here are some general steps to follow:\n\n1. Transfer the built binary to your embedded device:\n\n```bash\nscp target/armv5te-unknown-linux-gnueabi/release/fba root@192.168.10.100:/usr/bin/\n```\n\n2. Transfer example images:\n\n```bash\nscp -r images root@192.168.10.100:/root/\n```\n\n3. Log in to your device via SSH.\n\n```bash\nssh root@192.168.10.100\n```\n\n4. Ensure that your framebuffer device exists and is accessible:\n\n```bash\nls -l /dev/fb*\ncrw-rw----    1 root     root       29,   0 Jan  1  1970 /dev/fb0\n```\n\n5. Run the example on your embedded device:\n\n```bash\nfba --device /dev/fb0 --interval 5 --once --center /root/images/spaceship-640x480.gif\n```\n\nEnjoy your GIF animations on your embedded display!\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"images/spaceship-640x480.gif\" alt=\"gif\"/\u003e\n\u003c/p\u003e\n\n## Command Line Arguments\n\nThe Framebuffer Animations accepts the following command line arguments:\n\n- `--device`, `-d`: Specifies the framebuffer device file. Default is `/dev/fb0`.\n\n- `--interval`, `-i`: Sets the interval step for displaying GIF frames in milliseconds. Default is 5 milliseconds.\n\n- `--once`, `-o`: When provided, the GIF animation will play only one time. By default, it loops indefinitely.\n\n- `--center`, `-c`: When provided, the GIF animation will be centered on the framebuffer device. By default, the GIF is displayed at the top-left corner.\n\n- `gif_file`: The path to the GIF file that you want to play.\n\n## Troubleshooting\n\nIf you encounter any issues while using Framebuffer Animations, first check, if the framebuffer is in sleep mode.\nTo leave Framebuffer sleep power mode:\n\n```bash\necho 0 \u003e /sys/class/graphics/fb0/blank\n```\n\n## Image Sources\n\nThe example images used in this project are sourced from:\n\n* Spaceship - Kövesházi Dániel - https://dribbble.com/shots/3121924-Spaceship\n\n## Buy Me A Coffee! ☕\n\nIf you find the project beneficial and would like to support me, please consider showing your appreciation by buying me a coffee on [Buy Me A Coffee](https://buycoffee.to/pawelkn)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpawelkn%2Fframebuffer-animations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpawelkn%2Fframebuffer-animations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpawelkn%2Fframebuffer-animations/lists"}