PebbleOS Linux Port (for Android smartwatches) 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. This fork runs PebbleOS https://github.com/coredevices/PebbleOS as a Linux process. It keeps the PebbleOS scheduler, services, apps and UI, and adds Linux display, input, battery and device adapter drivers. The Samsung Galaxy Watch3 SM-R850 is the reference hardware. AI-generated concept mockup using a captured PebbleOS screen. On the Galaxy Watch3, the port runs alongside Samsung's Linux kernel and Tizen userspace. It renders a 260 × 260 round UI on the 360 × 360 display through Wayland or the framebuffer and reads buttons, bezel and touch through evdev. The separate Galaxy Watch3 connector https://github.com/brosiog/galaxy-watch3-connector handles Tizen sensor, haptic and display-power APIs over Unix datagram sockets. This is an experimental source candidate for developers. I’m currently daily-driving this port on my Galaxy Watch3, with occasional crashes. That describes my running development build; the protocol-v2 OS and connector in this repository have not yet been tested together on hardware . Earlier builds reached the launcher and handled controls and phone notifications on the watch. Host tests and AArch64/ARM32 cross-builds pass; battery endurance, sensor accuracy, suspend and display timing still need on-watch validation. GitHub Actions https://github.com/brosiog/pebbleos-linux/actions/workflows/linux-adapter.yml tracks the Linux OS/mock boot and host-test results. | Target | Output | |---|---| | native gabbro/galaxy watch3 | Static AArch64 Linux executable | | native gabbro/galaxy watch3 arm32 | ARM32 Linux executable using the device's glibc loader | The 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. Use this checkout for the steps below. Install the host packages and PebbleOS SDK described in the 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 was used for the candidate cross-builds. The native bootstrap fetches only the required submodules and applies the included NimBLE patch. sh tools/linux/bootstrap-native.sh python3 -m venv .venv . .venv/bin/activate python -m pip install -r requirements.txt cmake -S . -B build-galaxy -GNinja \ -DBOARD=native gabbro/galaxy watch3 \ -DPEBBLEOS SDK ROOT=/path/to/pebbleos-sdk cmake --build build-galaxy --parallel 4 Replace /path/to/pebbleos-sdk with the installed SDK directory. Put Zig on PATH . The outputs are build-galaxy/pebbleos and build-galaxy/system resources.pbpack ; use the ARM32 board name and a separate build directory for the other architecture. Follow the Linux port guide https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/development/emulation/linux port.md for runtime directories, device profiles, display selection and Left Hand Mode. Starting on a watch also requires the matching connector and permission to use the device interfaces. This source candidate does not install a boot service or provide a flashable Galaxy Watch3 firmware image. sh tests/linux adapter/run.sh sh tests/linux adapter/run display regressions.sh The first command needs a C11 compiler and pthreads. It tests the protocol client with a mock adapter. The display tests need a C23 compiler and Linux framebuffer headers; on macOS, set LINUX HEADERS to Zig's lib/libc/include/any-linux-any directory. Neither command needs the watch or the PebbleOS SDK. The Linux port guide https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/development/emulation/linux port.md tests covers firmware unit tests and 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 lists the hardware checks required before a device release. | Area | Source | |---|---| | Adapter client and protocol header | drivers/linux adapter/ , include/pbl/drivers/linux adapter.h | | Linux display and controls | drivers/display/linux/ , drivers/button/linux/ , drivers/touch/linux/ | | Watch configurations | boards/native gabbro/ | | Mock adapter and protocol tests | tests/linux adapter/ | | Linux build bootstrap | tools/linux/bootstrap-native.sh | Device-specific vendor APIs belong in a separate adapter. The OS owns UI and display policy and remains interactive when no adapter is available. Read the adapter protocol https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/drivers/linux adapter protocol.md and device-profile format https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/drivers/linux device profile.md before adding another watch. See CONTRIBUTING.md https://github.com/brosiog/pebbleos-linux/blob/linux-watch/CONTRIBUTING.md for contribution, sign-off and AI attribution rules. General PebbleOS architecture and development documentation remains in docs/ https://github.com/brosiog/pebbleos-linux/blob/linux-watch/docs/index.md . This work is based on Core Devices' PebbleOS https://github.com/coredevices/PebbleOS . Packaged snapshots include SOURCE ORIGIN.json , which records the workspace base commit and dependency pins. PebbleOS retains Apache-2.0 https://github.com/brosiog/pebbleos-linux/blob/linux-watch/LICENSE ; dependencies retain their own licenses. Samsung's runtime libraries are supplied by the device and are not included here.