So, looking at @ropeta comments and having same issue with not having native notifications on my Garmin watch, I’ve spent almost entire weekend trying to port what I found on Gadgetbridge and also Amazfish.
it installs a daemon that listens to SFOS notifications
app does the GFDI handshake with the watch so it thinks it talks to a real Garmin Connect app
when notification reaches the app, it forwards it to the watch
It was surprisingly lot of work, most of it I understand only to some degree. So if @piggz solution will work for me I guess I’m more than happy to take what I’ve learned these days with me and archive this one.
However, the Amazfish support message reached to me exactly as I opened Forum to post about how happy I am that this worked out in the end and I have my notifications now on my wrist…
One comment about the API. It should not be necessary to run some crazy privilidged daemons and disable sandboxing of the entire app, just to be able to read global notifications. This should be a permission, and a nice API provided by SFOS itself, with a big-ass warning to the users on what kind of permission they grant to that app and what are the consequences.
LLM learnings:
While working on it I approached it like usual, with Opencode and Kimi/GLM models and unfortunately it ended up in a mess of guess work. At one point I decided to pay for Claude again to see if I would be able to wrap my head around Garmin watch auth parts. Claude did amazing job in explaining me how this works on Gadgetbridge so I guess I could do right choices and steer it into doing what you can check as a result.
We have that joke in Polish:
A coal salesman approaches a delivery address and shouts: I’ve bring your coal!
Horse looks at him thinking: yeah, you bring it…
So, I’ve made myself an app. I’m not sure if I’m proud of it tbh but I’m sure it sends me my notifications to my wrist.
QML part is the easy one since I`m a web developer and also have some experience with SwiftUI. This is where I feel most comfortable with. C++ is where I feel weak.
If you use Garmin Connect you only have notifications from Android apps. So for people who prefer going as native as possible, this restricts push reaching your wrist to just a subset of them, most of them I’m not even interested seeing. I want to see email and matrix notifications, all of them I use as native apps.
I dont know if its even possible to code since isint it the code closed on Garmin? You would have to code app for Sailfish to run in the sailfish and coding it to work on the watch/ device, then the app would need to understand and give notifications from the Sailfish
I’m just swapping from my Fairphone 6 (no SFOS port yet) to my Jolla Phone 2026 finally, and was just looking for something like this!
I’ve got very minimum requirements, my Enduro 3 can update itself via guest WiFi, and BLE + Notifications is pretty much exactly what I need. Even weather info is luxury
So far I could install and pair it easily enough it could connect and send test notifications, it hasn’t yet managed to send weather, but I’ll retry that after a phone reboot soon
Thanks for the app!
edit: Besides the Test alert it doesn’t give me any notifications, even if I keep Vapaamin open and it says connected. The test notification does work fine though!
I’m going to need to get back on that tomorrow, if I get time!
I don’t have the SDK installed, nor virtualisation enabled, don’t have any of the prerequisites, I’m just a plain end user
I’ve spend 3 hours on getting the Sailfish SDK to run on my EndeavorOS PC, from modproping certain kernel modules to get docker to want to do networking to who knows what else; my advise: don’t try to get the SDK to work on a non-supported distro.
Ended up taking an old Ubuntu 26.04 LTS laptop, that worked like a breeze instead.
Still spent 4 further hours on that one, getting the SDK installed, connecting to my phone, downloading the source, compiling it and eventually deploying it; I’ve at least learned that being a sysadmin and network techy were the right ICT choice for me, and developer isn’t it!
Because of my inexperience with debugging I can hardly share anything useful with you either from all I’ve done, but I’ve got a few key facts:
After I deployed (sfdk deploy –sdk) the version compiled from your source, I noticed the Vapaamin-daemon wasn’t running, and was disabled. After starting and enabling it (it then made a symlink too) I started receiving notifications other than just the testing one.
After I then removed the compiled version properly, and reinstalled the one from OpenRepos, the daemon was enabled properly, but I’m back to only receiving Test notifications
No matter what I do on my watch to try and provoke a weather update, no weather update request appears to be sent to Vapaamin. I can update my current location, I can add a new location manually or from GPS, but it’s stuck for ages at “Updating Amsterdam” for example, and now just says “24+ hr. ago”
Adding weather locations does generate many GFDI: Received message: 5043 (payload xxx bytes), varying between 50 and 351 bytes mostly, but nothing further happens
Hopefully that helped at least a little bit
I’m sticking with the (for me) broken OpenRepos version for now, as to at least get future updates.
If you have SFOS SDK running, you should be able to configure it to build and deploy the app on your device automatically. You need to check the “play” button on the left sidebar and pick relevant architecture and device that’s known to the SDK (phone settings → development stuff → ssh). This way the SDK would build everything and deploy with logging shown in the SDK “application output”
There’s Amazfish as well which is like Gadgetbridge for Sailfish. I’ve recently created a merge request to add initial support for Garmin devices. @sznowicki: As Amazfish already has a good framework for notifications, weather, FIT data etc, only the Garmin protocol needs to be implemented which makes adding features more easy. Maybe we can combine our efforts there? I already used some of the code you wrote for Vapaamin to fix stuff in thecode I wrote for Amazfish.
Currently I have the following working:
Notifications
Calendar
Battery Status
Realtime HR/Steps/Spo2
I’m working on HTTP requests at the moment to allow Apps on the device Internet access (to be able to control HomeAssistant from the watch again). Downloading activities is on the list of future features.
I’ve published a new version of Vapaamin, now you can start saving logs to ~/Downloads folder. Please do it and then try your troubleshooting again, then send me the log, maybe I can see something that’s relevant to your device. On my end, everything works fine still.