Time is an illusion. (Albert Einstein)
Lunchtime – doubly so. (Douglas Adams)
Simple Instinct Tactical watch face. PRO features: An unlock code is required to get more display options in the data field 3, 4. Press More -. If you like watchface and want to support me in my further work, you can do so using PayPal: Upon support, you will receive a PRO code to unlock. Apr 21, 2021 Connect IQ only has watch faces. 5567595 5 months ago. Every time I go onto the Connect IQ app, and look at what I want to download it only has watch faces as the options. When I search for apps it say no results for watch faces. I've watched videos and It seems like I should be able to download things beside watch faces. This Connect IQ app may require or request payment for usage. Any payments related to this app will be processed using a third-party payment service chosen by the app developer. Garmin does not review or manage these payment services. We also do not receive your payments and cannot issue refunds.
There’s a good chance you’re wearing a watch on your wrist right now, and if you’re not wearing a horologically significant or sentimental time piece you’re probably wearing a smart watch, and if you’re wearing a smart watch it should be a Garmin watch (they did NOT pay me to say this)
Garmin watches are awesome. They are rugged, they hold the battery charge for days, some models even weeks, and they are highly customizable.
It is that last aspect that we’re going to concentrate on in this tutorial.
Garmin has an equivalent of Apple App Store (good name) or Google Play Store (horrible name), and it’s called Garmin Connect IQ Store (I’d like to be in that naming meeting)
App development for Garmin watches is done using proprietary language “Monkey C” (https://developer.garmin.com/connect-iq/monkey-c/) (probably named in that same meeting after everyone got drunk)
…yeah, really! What’s next? Monkey Do?
So, with that in mind, we’re going to design and implement a watch dial in monkey-c and deploy it to Garmin’s IQ store.
I wanted the watch face to look like Casio G-Shock because they are awesome, particularly G-LIDE model (GBX100)
I wanted the dial to show time, date, weather, pulse, steps, calories, distance walked today, and battery charge. I didn’t want to ask users for any extra permissions and I wanted this app to be as easy on the battery as possible, without any background processing.
I went on to design the dial on a piece of paper as I’ve heard that designing upfront makes the whole development process easier, and so I went through a couple of iterations.
Nothing exciting to talk about here, I just followed Garmin’s getting started guide: https://developer.garmin.com/connect-iq/connect-iq-basics/getting-started/
In short, you’ll need to download and install the Connect IQ SDK, sign up for dev account, install Eclipse (yuck) if you don’t already have one, install Connect IQ Eclipse plug-in, which turns Eclipse into a Connect IQ development environment, and generate dev key.
The installation will be somewhat painful if it’s your first development endeavor, but nothing like installation of an IBM Websphere Portal.
After all installation is done you can go ahead and create your own sample app to make sure everything works.
Follow this: https://developer.garmin.com/connect-iq/connect-iq-basics/your-first-app/
Once all steps are completed, run the app and this is what you’ll see in a simulator:
If you followed the instructions to the letter then you’ve probably installed command line tools, which give you wonderful commands like:
// Compile the executable:
> monkeyc -d fenix5plus -f /path/to/monkey.jungle -o project_name.prg -y /path/to/Dev_Key
// Run in the simulator
> monkeydo myApp.prg fenix5plus
I’m starting to really like these Garmin folks, they seem to have a sense of humor.
Source code of the sample app looks very much like Android source code, with classes extending Views, xml layouts and referencing elements by id:
Again, the way layout works is very similar to Android, the watch face layout is located in /resources/layouts/layout.xml
It looks like Garmin is running a highly customized version of Android, so Android devs will feel right at home here… if you want a flashback to the early days of Android.
Unlike working in Android Studio however, working in Eclipse feels like I’m back in early 2000s. It’s clunky and unnatural and unintuitive. Something that only takes a few seconds to implement in Android Studio now takes forever in Eclipse. This makes you really appreciate JetBrains’ IDEs (They did not pay me to say this.)
When laying out the elements on the watch face you have to remember that the coordinate system is based on a square screen, so the corners are beyond the round viewport of the watch. So, if you place something in the corners they will not show up, you’ll have to experiment with coordinates, like in the layout I have below:
You can define coordinates in pixels or percent.
I also wanted to display a grid of gray lines, like on Casio watches, this is taken care of by:
<drawable id=“scaffolding”></drawable> which references scaffolding.xml:
At this point all data except for the time is hardcoded. Time to connect it to the real data.
For getting the data on the screen we’ll use
Toybox.ActivityMonitor gives us heart rate, steps, burned calories and distance walked/ran since midnight. The distance is in cm, so we’ll have to convert it to miles or km based on system settings
Toybox.System gives us clock and battery
Toybox.Weather gives us weather
Toybox.Application gives us access to properties that can be set by the user in the app settings.
So now, once we have a layout defined, we can get the element in code by
and set its value, for example for the hours and minutes:
There is a way to create a watch face that would accept users’ custom settings, like for colors, or optional fields on the screen. For this you’ll define resources/settings/settings.xml
and resources/settings/properties.xml
To run settings screen for the simulator, use Eclipse’s ConnectIQ tab, then select App Settings Editor.
One of the main struggles I had was the battery icon. I wanted it to be a proper graph, indicating a real-time charge level. The problem is all Garmin devices have different resolutions, and there’s no notion of DIP in Garmin (Density Independent Pixels) So, I had to create my own DIP calculation:
Please don’t laugh, my brain still hurts.
Oh yeah, and be prepared to draw or modify icons pixel by pixel, and with specific colors Garmin recognizes. I used Gimp, it’s free and it’s awesome:
Anyway, after all said and done here’s what I got:
You can find it in Garmin’s app store here: https://apps.garmin.com/en-US/apps/c2f2b648-ab65-4329-991a-b9f240bcb92f
It’s great to be able to develop watch faces and apps for smart watches, and I feel that Garmin is making the whole process easy for new developers, especially if you have some Android background.
The only suggestion I have is to make the dev environment a little friendlier and documentation more organized. Working with Eclipse and Garmin’s plugin is a huge step back when compared to Android Studio and Intelli-J that it’s based on.
Working with current dev documentation can be frustrating and you’ll end up hunting for a simple answer forever.
Also, there’s a great forum for Garmin devs: https://forums.garmin.com/developer/connect-iq/
You’ll meet a lot of good folks there. They have changed my perspective on Garmin development from negative to positive over the course of 3 weeks.
Developers and the engaging and appreciative users are what made me enjoy the whole process.
Happy coding!
Joe Berger
References:
Special thanks to Joshua Miller for inspiration: https://medium.com/@JoshuaTheMiller/making-a-watchface-for-garmin-devices-8c3ce28cae08
Save button in the settings does not work
It appears that Garmin apps on iOS have problems recently, possibly after updating to iOS15. The investigation is ongoing, but for now you could try these things that reportedly helped some users:
1) If you experience this problem with Rails, check the “Countdown timer” field. Does it show any valid date, or is it empty?
Try to set it to some date in the future and check if then you can save the settings.
If this doesn’t help, or with other watch faces
2) Check “Alt time offset from UTC”. Try to change it to zero and save the settings.
If you would like to help with further diagnosing of this problem, please contact the developer with your findings.
Countdown setting in is stuck on January 1970. No way to change
This is a problem of Garmin Connect IQ app. Please try Garmin Connect instead. Overall, experience shows that Connect IQ is consistently buggy and less reliable than Connect.
How do I change time format to 12/24h?
You can change this in your device settings. It can be done directly on the watch in the system/time menu, or in Garmin Connect Device Settings. It is advisable to synchronize your watch with your phone after you make the change, to make sure it is reflected everywhere.
Unable to uninstall – repeated attempts result in “Uninstall Error” message
On some watch models it is not possible to uninstall a watch face while it is currently displayed on your watch. This is a Garmin problem that will affect any Connect IQ watch face that you try to uninstall. To get around this, please press a button on your watch to show something else (e.g. menu, widget or activity), and then try again to uninstall the watch face.
Unable to uninstall – Garmin Connect IQ begins to install it immediately after deleting
This looks like a bug in the Garmin Connect IQ app. If you are affected, please try to switch off the “Auto update” option in Garmin Connect IQ.
After updating from the previous version, the weather and sunrise/sunset is wrong
It seems that after update, some watch models (fenix 6) report incorrect GPS location to the watch face, which corrupts the information that relies on location. If this happens to you, please go to an activity that uses GPS (e.g. run) and update your GPS location. If this happens in Rails, now you have an option to check the current GPS coordinates in the Opt data fields.
How to have the full version?
Please visit:
https://vgfsyhcxft.com/rails-unlock/ for Rails
https://vgfsyhcxft.com/time-flies-unlock/ for Time Flies
https://vgfsyhcxft.com/night-day-unlock/ for Night & Day
https://vgfsyhcxft.com/spinner-unlock/ for Spinner
https://vgfsyhcxft.com/gradient-unlock/ for Gradient
I do not see unlock token in the settings, the field is blank
Please make sure that the watch face you want to unlock is selected as the active one on your watch. If you still can’t see the token, please check the Bluetooth connection between your watch and your phone, and the phone’s internet connection. You might also try to restart your Connect app, or restart your phone and your watch.
Unlock key does not work, shows status ‘invalid’
First, for the key validation to complete, the face you want to unlock must be selected as the active one on your watch.
Besides that, on Venu the watch needs to ‘wake up’ from the ‘sleep’ state to process the key validation.
Also please note that it is not enough to enter the key and press ‘OK’. After that you need to press the ‘DONE’ or ‘SAVE’ button to save all the settings, only after that the key status will be updated, and to see the updated information you need to exit the settings and enter again. This is a limitation of Garmin’s apps that don’t seem to update the information ‘on the fly’.
However, if you enter the key and at the same time start changing the locked settings, it should work right away. Please make sure that you see the message “Settings saved successfully”. If after that you don’t see your changes reflected on the watch, then you might want to check the key status.
If this does not help and you are sure that you entered the correct token on the unlock page (you can confirm this by comparing the token in your settings and the token in the email you receive) and the correct key into the ‘Unlock key’ field in the settings, then the persisting ‘invalid’ status seems to be a problem of the Connect app having trouble with updating the settings. To get around this you can try:
-Restart the Connect app (sometimes only after several restarts it works)
-Restart the watch
-Use Connect IQ app or Garmin Express instead
Some users are confused by the persistent ‘key icon’ next to some options in the settings – please note that this does not go away once you have entered a key. This icon is meant to clearly indicate which options require the key and so it will always stay there regardless of the key validity status.
Also, if you don’t get the weather data even though you have entered a correct key, this is probably because you have not updated the GPS location. Please see the related point below.
I have paid for the fully functional watch face, but I have not received the activation code
This happens quite often and the usual reasons are:
1) Wrong spelling of the payer email address (e.g. gmial.com instead of gmail.com) – in this case the email containing the unlock key can’t be delivered.
2) The default email in the PayPal profile is different from the one that the payer uses daily, or sometimes already out of use – if you don’t remember what email address you set in your PayPal profile, please log in to your PayPal account and check.
3) The recipient mailbox is full.
If you can’t retrieve your unlock key because of the invalid email account, you can use the ‘Contact’ link here or the ‘Contact developer’ link on the download page for help, but please be patient because the developer may not always be able to reply immediately. Please make sure you provide the correct return email address, otherwise the developer won’t be able to get back to you, back to square one 🙂
I can’t get the alternative time zones working. It isn’t possible to change the offset
This seems to be a recurring problem in Garmin apps not being able to handle entry of decimal numbers as expected. If you can’t edit the offset in Garmin Connect app, please try Connect IQ instead. If both fail, it may also be worth trying Garmin Express on a PC.
I can’t get weather information or the information is totally off
The weather information depends on your location, so after installing a watch face, you need to update the GPS coordinates (for example by briefly switching to an activity screen, run, bike etc.). It appears that on some watches the GPS information is lost after updating the watch face from an earlier version. If your weather info is wrong, please try to refresh the GPS.
Does not work on my new watch, only shows IQ
This can happen when your watch is running an outdated system software (firmware), which is a common case after purchasing a new watch. Often, installing a connect IQ app requires updating the firmware. Normally Garmin app should inform you of this, but apparently this is not always the case. Please try to update your watch firmware to the latest one – this should happen automatically when you first connect your watch to Garmin Express application on a computer, which is a good thing to do anyway.
I try to download this watch face and it tells me my device needs an update but it is up to date with the latest SW
The most likely explanation is that you have tried to update the watch firmware and then immediately to install a new watch face, using Garmin Express. Please note that while your watch is connected to a PC with a USB cable, the files are only copied to the watch, but not really installed. For an installation via Garmin Express to complete, you need to disconnect the USB cable first. Therefore, if the new watch face requires new firmware, you need to disconnect the cable and allow the firmware installation to complete before attempting to install the watch face.
The sunrise sunset option is only giving me a blank line
After a fresh installation of the watch face, you need to refresh your GPS coordinates which are necessary for the sunrise/sunset calculation. To do this, just switch to an activity such as run or cycle and wait until ‘GPS ready’ message appears or the GPS indicator turns green. Then you can cancel the activity and return to the face. The sun times should now be shown. Note that you may need to repeat this procedure after you have changed your location for the sun times to be updated accordingly. It has been reported that on some newer watches this procedure may still not lead to a successful sun times display. An additional step is needed to ensure that the watch is using the ‘Time Sync’ with GPS and not with the mobile phone. This is done in the watch system settings.
The ‘resting HR’ is not displayed (showing only –)
This appears to be a problem of Garmin firmware – from time to time it stops providing the resting HR information to Connect IQ apps. If this happens, you can fix this problem (at least for some time), by going to the watch Settings/User Profile/Heart Rate/Resting HR and choosing an option there.
HR and Seconds only show for a while and then lost! Why?
Garmin pre-2017 watches (e.g fenix 3 family, FR23x, Vivoactive HR) generally can only refresh the watch face once a minute, except when in ‘high power mode’, which is activated by a wrist gesture and lasts about 10 seconds. That’s why there are so many watch faces that can display the seconds only for a short while and so many confused users thinking this is a bug.
In fact this is not a bug but a way to conserve the battery. However, with the newer watches beginning from fenix 5, Garmin introduced ‘partial update’ function that allows a watch face to be updated every second, if special care is taken by the developer to keep these updates within allowed ‘power budget’ limit. Again, this is meant to extend the battery life, so generally there is not much that a watch face can do besides updating the seconds and HR.
So if you are using one of my watch faces and you do not see the seconds displayed continuously, most likely your watch simply cannot support this function.
It is also worth noting that the activation of the ‘high power mode’ works both ways, so that when you raise your wrist, it is activated, but when you lower your wrist before 10 seconds elapse, it is immediately deactivated.
I want 24h display but the watch keeps going back to 12h (or the opposite)
In theory, the switching between 24/12 hour modes is controlled by the watch settings. If your watch is set to operate in 24 or 12 hour mode, my watch face will follow the same format. However, this doesn’t always work smooth because the time format can be set either from the watch built-in settings menu, from the device settings in Garmin Connect Mobile or device settings on Garmin Connect web page. To make it even more complicated, Garmin Connect has a separate time format selection in the device settings and another one for the user account settings display preferences. Experience shows that if all these settings are not consistent, you may observe undesired switching between time formats on your watch when it synchronizes with your Garmin account. To avoid this, please make sure that the same time format is set as your preferred choice everywhere.
The watch face only shows imperial units, while I want metric (or vice versa)
These watch faces do not have a separate setting to choose the units, they just follow the system setting of the watch. So if you don’t see the units you want, please check your watch system settings (on the watch menu), or device settings in Garmin Connect Mobile.
My units settings are miles, however it is showing in yards
The display will switch to miles when you complete 1760 yards.
I like the look of the watch face but there is a very long delay when you press a button to navigate away from the watch face screen
This is a problem that is difficult to avoid on older watch models (forerunner 230, 235, 630, fenix 3, vivoactive), due to the way the watch firmware handles the transition between screens and a low processing power of the watch.
If you compare a complex Connect IQ face to Garmin’s native face, the CIQ face will generally cause a longer delay. Native Garmin watch faces are part of the watch system software (AKA firmware), which means they are highly optimized, but not very flexible. On the other hand, Connect IQ faces give the user a lot of choices, but at the cost of running on top of the Connect IQ engine, which adds an additional level of intermediate processing (or translation from what the developer intended to what the watch eventually does).
For Time Flies, the default configuration after first installation will result in some 2 second lag on the slow watches. You can reduce the lag by disabling the shadow effect (set the ‘Shadow’ option to ‘Off’. Any additional data that you configure (option fields, graphs in DBox) will increase the lag. Also, more complex hand shapes such as ‘Sport’ will cause a longer lag than the simple ones such as ‘Straight’.
Time Flies on some models has an option called ‘Fast screen switch’. If this is activated, the lag on switching screens should be reduced, but in some cases this may cause the watch face to redraw only partially – this is a tradeoff. However, the screen will be fully refreshed on the next full minute, or immediately if you move your wrist.
I am not able to download any apps. It says no connection with server. Try again later. This has been happening for a long time
Assuming your internet connection is OK, this might be a problem with your login credentials to Garmin’s server. Are you sure your user name and password are correct? Please try to log out and log in again.
The watch reverts to the built-in digital watch face or shows IQ
This kind of problem could be the fault of the CIQ application, but sometimes it could also be caused by issues with Garmin’s firmware. If the face has been working well and suddenly does not work any more after Garmin’s firmware update, it is probably a firmware’s problem.
If it happens you can try these steps:
- Check that your watch has been updated to the latest available firmware version (there is a topic on this above).
- Go to the face selection menu on the watch and select your chosen face again. If this doesn’t help,
- Try to uninstall the face and install it back.
- If the default face appeared after changing some setting of your current watch face, try to revert this setting and repeat step 2. If it is confirmed that the setting change was causing the problem, please report via the ‘Connect Developer’ link.
- Sometimes the watch firmware may enter some unstable condition that causes the Connect IQ applications to malfunction. In such cases a power cycle might help – turn the watch off from the menu (soft reset) or press and hold the power button until the display goes blank (hard reset), then press again to turn the watch back on.
- If your preferred watch face suddenly stops working after firmware update, it is always good to check if other watch faces still work well. If they don’t, it is the firmware’s problem and probably the only solution is to wait until Garmin fix it.
The features of the watch face activated by wrist gesture don’t work
It seems to be a recurring problem with Garmin firmware – the watch system does not notify the watch face of the wrist gesture, unless you enable backlight activation by wrist gesture in the watch settings.
For example, on fenix 5x, press the menu button, then choose Settings->System->Backlight->Watch Mode->Gesture->On, or ‘After Sunset’.
Garmin Iq Watch Face Queued
This seems to be a common problem on Vivoactive 4 or 4s – apparently gesture activation does not work there at all (at least for some users, maybe for all). I don’t know if there is any solution for this.