{"id":25569363,"url":"https://github.com/pebble-dev/RebbleOS","last_synced_at":"2026-03-19T11:30:20.373Z","repository":{"id":47427009,"uuid":"90079669","full_name":"pebble-dev/RebbleOS","owner":"pebble-dev","description":"open source operating system for low-power smartwatches","archived":false,"fork":false,"pushed_at":"2024-06-18T05:33:53.000Z","size":3879,"stargazers_count":493,"open_issues_count":62,"forks_count":45,"subscribers_count":49,"default_branch":"master","last_synced_at":"2025-02-14T19:46:00.056Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pebble-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-02T21:29:10.000Z","updated_at":"2025-02-14T09:36:13.000Z","dependencies_parsed_at":"2022-07-25T01:16:41.556Z","dependency_job_id":null,"html_url":"https://github.com/pebble-dev/RebbleOS","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/pebble-dev%2FRebbleOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pebble-dev%2FRebbleOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pebble-dev%2FRebbleOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pebble-dev%2FRebbleOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pebble-dev","download_url":"https://codeload.github.com/pebble-dev/RebbleOS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239933079,"owners_count":19720728,"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":[],"created_at":"2025-02-21T00:02:20.105Z","updated_at":"2026-03-19T11:30:20.316Z","avatar_url":"https://github.com/pebble-dev.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# RebbleOS\n\nRebbleOS is an open-source reimplementation of the firmware for the devices formerly manufactured by Pebble Technologies, Inc.\nThe firmware is based on FreeRTOS, and aims to be binary-compatible with applications that were written for the original Pebble OS, as well as radio-compatible with smartphone applications that are designed to work with Pebble.\n\n#### Links\n\n- https://github.com/ginge/FreeRTOS-Pebble\n- https://github.com/pebble-dev/wiki/wiki\n- https://github.com/pebble-dev/RebbleOS/issues\n\n## Supported Feature Matrix\n\n|Feature          |TinTin (Pebble 1)|Snowy (Time, Time Steel)|Chalk (Round)|Silk (Pebble 2)|Asterix|Vla-52840|\n|:---:            |:---:            |:---:                   |:---:        |:---:          |:---:  |:---:    |\n|Display:         |N                |Y                       |N            |N              |Y      |Y        |\n|Flash:           |Y                |Y                       |Y            |N              |Y      |Y        |\n|Buttons:         |Y                |Y                       |Y            |N              |Y      |Y        |\n|Accel:           |N                |N                       |N            |N              |N      |N        |\n|Gyro:            |N                |N                       |N            |N              |N      |n/a      |\n|Magnetometer:    |N                |N                       |N            |n/a            |N      |n/a      |\n|HRM:             |n/a              |n/a                     |n/a          |N              |n/a    |N        |\n|Vibrate:         |N                |Y                       |Y            |N              |N      |N        |\n|Backlight:       |Y                |Y                       |Y            |N              |N      |N        |\n|Power Management:|N                |N                       |N            |N              |N      |N        |\n|Bluetooth:       |N                |Y (Alpha)               |N            |N              |WIP    |WIP      |\n|Overall (%):     |5%               |20%                     |10%          |0%             |15%    |15%      |\n\n## FAQ\n\n**Q: Do you have a list of work to do?**\n\nA. Sadly not yet. Get the code up and running, and see what is obviously missing that you would like to do. Check with the channel first on what we have\nWe also have a list of issues https://github.com/pebble-dev/RebbleOS/issues\n\n**Q: Can anyone do this?**\n\nA. Sure. Make a change to the code, docs etc and submit a pull request\n\n**Q: How much works?**\n\nA. Basic hardware and some apps will work ok. Bluetooth is coming along slowly. We are writing the core functions at the moment.\n\n**Q: Can I run it on hardware?**\n\nA. Snowy, yes. But it's experimental and whatnot. Be careful. We are not liable for eaten dogs.\n\n**Q: Where is the FPGA. It complains when I build.**\n\nA. It's pinned in the [Discord](http://discord.gg/aRUAYFN) channel for download. Click the pin icon on the top right and you should see a post with two links to .bin files.\n\n## Hacking\n\nRebbleOS needs your help! This section discusses what you need to know to\nget started working on the project.\n\n\n\n### Building\n\n![](https://github.com/pebble-dev/RebbleOS/workflows/CI%20build/badge.svg)\n\nRebbleOS currently can be built for `snowy` (Pebble Time and Pebble Time\nSteel) and `tintin` (Pebble and Pebble Steel).  To build RebbleOS, follow\nthese steps:\n\n* Obtain a checkout of the RebbleOS source code.  Ensure that you have also checked out the submodules required to build the resource tree: `git submodule update --init --recursive`\n* Create a `localconfig.mk` if your cross-compiler is in an unusual location.  For instance, if you have the SDK installed in `/home/me`, add the following line to your `localconfig.mk`: `PEBBLE_TOOLCHAIN_PATH=/home/me/Pebble/SDK/pebble-sdk-4.5-linux64/arm-cs-tools/bin`.  For more information on `localconfig.mk` variables, consult the `Makefile`.\n* Build the firmware: `make`\n* If you wish to run the firmware in `qemu`, copy the resources necessary into `Resources/`.  Take a look at [Utilities/mk_resources.sh](Utilities/mk_resources.sh) for more information on that.\n* To run the firmware in `qemu`, try `make snowy_qemu`.\n\n[Building on Debian Stretch](docs/debian_build.md)\n\n[Building on Arch Linux/Parabola](docs/arch_build.md)\n\n[Building on macOS](docs/mac_build.md)\n\n[Building on Windows](docs/windows_build.md)\n\nIf you wish to build firmware to run on your device, you may also wish to\nconsider a script like [Utilities/flash_device_adb.sh](Utilities/flash_device_adb.sh). Running RebbleOS on hardware is\ncurrently out of scope for this document.\n\n\u003e You need the `snowy_fpga.bin` and `chalk_fpga.bin` files to compile on their respective firmwares. They can be found on the `#firmware` channel in the [Rebble Discord](http://discord.gg/aRUAYFN).\n\n### Code structure\n\n_(This section is, admittedly, somewhat aspirational.  Do not be surprised\nif code within RebbleOS does not necessarily conform to this structure\nyet!)_\n\nRebbleOS is composed of four major components: the hardware abstraction\nlayer, the core operating system, the PebbleOS compatibility layer, and\nsystem applications.  We break down these components as follows:\n\n* **Hardware abstraction layer.**  This subsystem provides a unified\n  interface for the rest of the system, and abstracts away platform-specific\n  elements.  The HAL lives in the directory `hw/`; symbols that the HAL\n  exports to the rest of the system are prefixed with `hw_`.  The main\n  entity that the HAL works on is a _\"platform\"_; for an example, take a\n  look at [hw/platform/snowy/config.mk](hw/platform/snowy/config.mk).  A platform depends on various chip\n  components, and potentially other driver components; it exports a\n  [platform.h](hw/platform/snowy/platform.h) that includes all defines that the rest of the system may\n  need.  The HAL is, in theory, independent of the rest of the OS; it does\n  not call into the rest of the system other than through debugging\n  mechanisms and through callbacks that it is provided.\n\n* **Core OS.** This subsystem provides basic services that any smartwatch\n  OS, even if not implementing a Pebble-like API, might need.  HAL accesses\n  are marshalled through concurrency protection; higher-level power\n  management takes place; and, flash wear leveling and filesystem management\n  happens in the core OS.  The core OS lives in `rcore/`, and symbols\n  exported from the core OS are prefixed with `rcore_`.  It calls on\n  FreeRTOS, which lives in `FreeRTOS/`.\n\n* **Pebble compatibility layer.**  The core OS provides basic isolation\n  between threads and framebuffer management primitives, but the Pebble\n  compatibility layer provides higher level operations, like Pebble-style\n  layers, input management and routing, and UI services.  The Pebble\n  compatibility layer lives in `rwatch/`, and symbols exported from it are\n  prefixed with `rwatch_`.  (Functions that are exactly analogous to Pebble\n  APIs may be named with their exact name.)\n\n* **System applications.** We'll, uh, get there when we have some.  Yeah.\n\n### Code style guide\n\nlogging:\n- DRV_LOG for hw\n- KERN_LOG for rcore drivers\n- SYS_LOG for rcore/rwatch processes\n- APP_LOG is for logging from apps, internal or otherwise\n\nNo style wars.\n\nDo what's best.\n\n## Reuse and contact\n\nRebbleOS is an open-source project licensed (primarily) under a BSD-style\nlicense.  For more information, please see the [LICENSE](LICENSE) and [AUTHORS](AUTHORS)\nfiles.  Additionally, contributors and members of the RebbleOS community are\nexpected to abide by our code of conduct; for more information on that,\nplease see the [CODE-OF-CONDUCT.md](CODE-OF-CONDUCT.md) file.  Reuse of this project is not only\npermitted, but encouraged!  If you do something cool with RebbleOS, please\nget in touch with us.  The easiest way to do so is through the [Rebble\nDiscord server](https://discordapp.com/invite/aRUAYFN), channel #firmware.\nWe look forward to meeting you!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpebble-dev%2FRebbleOS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpebble-dev%2FRebbleOS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpebble-dev%2FRebbleOS/lists"}