{"slug": "pebbleos-linux-port-for-android-smartwatches", "title": "PebbleOS Linux Port (for Android smartwatches)", "summary": "A developer has published an experimental Linux port of PebbleOS that runs the watch operating system as a Linux process on the Samsung Galaxy Watch3 SM-R850, rendering a 260 × 260 round UI on the device's 360 × 360 display through Wayland or the framebuffer and reading buttons, bezel and touch through evdev. The port runs alongside Samsung's Linux kernel and Tizen userspace, with a separate ARM32 Galaxy Watch3 connector handling Tizen sensor, haptic and display-power APIs over Unix datagram sockets; the author says the protocol-v2 OS and connector \"have not yet been tested together on hardware,\" though earlier builds reached the launcher and handled controls and phone notifications. Host tests and AArch64/ARM32 cross-builds pass using Zig 0.17.0, while battery endurance, sensor accuracy, suspend and display timing still need on-watch validation, and the source candidate ships no boot service or flashable firmware image.", "body_md": "This fork runs [PebbleOS](https://github.com/coredevices/PebbleOS) as a Linux process. It keeps\nthe PebbleOS scheduler, services, apps and UI, and adds Linux display, input, battery and device\nadapter drivers. The Samsung Galaxy Watch3 SM-R850 is the reference hardware.\n\n*AI-generated concept mockup using a captured PebbleOS screen.*\n\nOn the Galaxy Watch3, the port runs alongside Samsung's Linux kernel and Tizen userspace. It\nrenders a 260 × 260 round UI on the 360 × 360 display through Wayland or the framebuffer and\nreads buttons, bezel and touch through evdev. The separate [Galaxy Watch3 connector](https://github.com/brosiog/galaxy-watch3-connector)\nhandles Tizen sensor, haptic and display-power APIs over Unix datagram sockets.\n\nThis is an experimental source candidate for developers. I’m currently daily-driving this port\non my Galaxy Watch3, with occasional crashes. That describes my running development build;\nthe **protocol-v2 OS and connector in this repository have not yet been tested together on\nhardware**. Earlier builds reached the launcher and handled controls and phone notifications\non the watch. Host tests and AArch64/ARM32\ncross-builds pass; battery endurance, sensor accuracy, suspend and display timing still need\non-watch validation. [GitHub Actions](https://github.com/brosiog/pebbleos-linux/actions/workflows/linux-adapter.yml)\ntracks the Linux OS/mock boot and host-test results.\n\n| Target | Output | \n|---|---|\n| `native_gabbro/galaxy_watch3` | Static AArch64 Linux executable | \n| `native_gabbro/galaxy_watch3_arm32` | ARM32 Linux executable using the device's glibc loader | \n\nThe connector is ARM32 to match Tizen's libraries and can communicate with either OS build. Use matching protocol-v2 sources; the v1 connector is incompatible. Other watch models and existing Pebble applications need separate compatibility testing.\n\nUse this checkout for the steps below. Install the host packages and PebbleOS SDK described in\nthe [getting-started guide](https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/getting_started/index.md), plus CMake, Ninja and Zig. Zig 0.17.0\nwas used for the candidate cross-builds. The native bootstrap fetches only the required\nsubmodules and applies the included NimBLE patch.\n\n```\nsh tools/linux/bootstrap-native.sh\npython3 -m venv .venv\n. .venv/bin/activate\npython -m pip install -r requirements.txt\n\ncmake -S . -B build-galaxy -GNinja \\\n  -DBOARD=native_gabbro/galaxy_watch3 \\\n  -DPEBBLEOS_SDK_ROOT=/path/to/pebbleos-sdk\ncmake --build build-galaxy --parallel 4\n```\n\nReplace `/path/to/pebbleos-sdk` with the installed SDK directory. Put Zig on `PATH`. The outputs\nare `build-galaxy/pebbleos` and `build-galaxy/system_resources.pbpack`; use the ARM32 board name\nand a separate build directory for the other architecture.\n\nFollow the [Linux port guide](https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/development/emulation/linux_port.md) for runtime directories,\ndevice profiles, display selection and Left Hand Mode. Starting on a watch also requires the\nmatching connector and permission to use the device interfaces. This source candidate does\nnot install a boot service or provide a flashable Galaxy Watch3 firmware image.\n\n```\nsh tests/linux_adapter/run.sh\nsh tests/linux_adapter/run_display_regressions.sh\n```\n\nThe first command needs a C11 compiler and pthreads. It tests the protocol client with a mock\nadapter. The display tests need a C23 compiler and Linux framebuffer headers; on macOS, set\n`LINUX_HEADERS` to Zig's `lib/libc/include/any-linux-any` directory. Neither command needs the\nwatch or the PebbleOS SDK.\n\nThe [Linux port guide](https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/development/emulation/linux_port.md#tests) covers firmware unit tests\nand the OS/mock boot workflow. The [protocol specification](https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/drivers/linux_adapter_protocol.md#before-release)\nlists the hardware checks required before a device release.\n\n| Area | Source | \n|---|---|\n| Adapter client and protocol header | `drivers/linux_adapter/` ,`include/pbl/drivers/linux_adapter.h` | \n| Linux display and controls | `drivers/display/linux/` ,`drivers/button/linux/` ,`drivers/touch/linux/` | \n| Watch configurations | `boards/native_gabbro/` | \n| Mock adapter and protocol tests | `tests/linux_adapter/` | \n| Linux build bootstrap | `tools/linux/bootstrap-native.sh` | \n\nDevice-specific vendor APIs belong in a separate adapter. The OS owns UI and display policy\nand remains interactive when no adapter is available. Read the\n[adapter protocol](https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/drivers/linux_adapter_protocol.md) and\n[device-profile format](https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/drivers/linux_device_profile.md) before adding another watch.\n\nSee [CONTRIBUTING.md](https://github.com/brosiog/pebbleos-linux/blob/linux-watch/CONTRIBUTING.md) for contribution, sign-off and AI attribution rules.\nGeneral PebbleOS architecture and development documentation remains in [docs/](https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/index.md).\n\nThis work is based on [Core Devices' PebbleOS](https://github.com/coredevices/PebbleOS).\nPackaged snapshots include `SOURCE_ORIGIN.json`, which records the workspace base commit and\ndependency pins. PebbleOS retains [Apache-2.0](https://github.com/brosiog/pebbleos-linux/blob/linux-watch/LICENSE); dependencies\nretain their own licenses. Samsung's runtime libraries are supplied by the device and are not\nincluded here.", "url": "https://wpnews.pro/news/pebbleos-linux-port-for-android-smartwatches", "canonical_source": "https://github.com/brosiog/pebbleos-linux", "published_at": "2026-10-30 03:29:42+00:00", "updated_at": "2026-10-30 03:46:55.855288+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools"], "entities": ["PebbleOS", "Samsung Galaxy Watch3 SM-R850", "Tizen", "Linux", "Wayland", "Zig 0.17.0", "Samsung", "NimBLE"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/pebbleos-linux-port-for-android-smartwatches", "markdown": "https://wpnews.pro/news/pebbleos-linux-port-for-android-smartwatches.md", "text": "https://wpnews.pro/news/pebbleos-linux-port-for-android-smartwatches.txt", "jsonld": "https://wpnews.pro/news/pebbleos-linux-port-for-android-smartwatches.jsonld"}}