Smart Bike Lights (Data Field) / Bike Lights Control (Widget)

I've made two open source CIQ applications to control ANT+ lights:

- Smart Bike Lights (data field): https://apps.garmin.com/en-US/apps/0d9fd828-c932-4470-9c37-fd2828881888 

      Configurator: https://maca88.github.io/SmartBikeLights/ 

- Bike Lights Control (widget): https://apps.garmin.com/en-US/apps/fa3c2332-76e3-4ba1-8528-32a0fd617ab1 

     Configurator: https://maca88.github.io/BikeLightsControl/ 

Smart Bike Lights features:
- Automatic light control (Smart mode) based on the configured filters (sunset, sunlight, speed, ...)
- Manual light control (only for Edge devices with a touch screen or devices with CIQ 3.2 and more than 32KB memory)
- Records lights modes that are displayed in Garmin Connect

Bike Lights Control features:
- Manual light control (available to all devices)

Both applications can be installed on the same device, which can be useful for low end devices (e.g. Edge 520) where "Bike Lights Control" can be used to change light modes manually and "Smart Bike Lights" for automatic light control.

Currently registered ANT+ lights:
- Bontrager Ion Pro RT
- Bontrager Ion 200 RT
- Bontrager Flare RT
- Garmin Varia RTL500
- Garmin Varia RTL510
- Garmin Varia RTL515
- Garmin Varia HL500
- Garmin Varia UT800

in case your ANT+ light is not on the list you can help by doing the following:

1. Install Bike Lights Control
2. Pair your bike light with your Garmin device
3. Open the widget:
- Edge with a touch screen: post which numbers are displayed on the buttons and what mode each button represents when pressed
- Other devices: Select the "Light modes" menu and post which numbers are displayed in the menu and what mode each menu item represents when selected

Example for Bontrager Ion Pro RT:


1 -> High steady beam
2 -> Medium steady beam
5 -> Low steady beam
63 -> Day flash
62 -> Night flash

There are some features that could be possible to add in the future, but would require Garmin to add them to the CIQ api. In case you are interested in any of the below features, consider upvoting their feature request thread:

1. Control lights based on the ambient light sensor available on some devices:
https://forums.garmin.com/developer/connect-iq/i/bug-reports/ambient-light-sensor-api-access 

Known issues:

1. Unable to use Tempe Visualizer or TyreWiz Data Field alongside Smart Bike Lights:
https://forums.garmin.com/developer/connect-iq/i/bug-reports/lightnetworklistener-onbikelightupdate-not-called-when-certain-data-fields-are-installed

  • maca88

    Thanks for doing the conversion for me.

  • Hi maca88,

    I contacted Ravemen directly to clarify the ANT+ behavior of the FR300 ANT+, and I got a response from their product development team (Bob).
    Here is a quick summary of what they told me:

    • The light did pass ANT+ certification, but they admit they did not follow the full ANT+ Lights specification, especially the parts related to reporting the current mode, physical-button updates, and extended mode mapping.

    • They implemented only the functions needed for the Garmin built-in Light Control page, claiming that this is their “main concern” because most users control the light via the Garmin page.

    • They did not test Smart Bike Lights or Bike Lights Control apps at all.

    • They confirm that the light does not send mode updates when switching modes via the physical button — and they consider this “expected”, because they didn’t implement the full spec.

    • They are not sure if a stricter implementation of the official ANT+ profile would still work with Garmin the way they want.

    • The FR300 ANT+ cannot receive firmware updates, so any fixes are unlikely.

    Given all this, it looks like the FR300 ANT+ implementation is basically incomplete, and Ravemen doesn’t plan to change anything.

    With that in mind, would it be possible on your side to support the FR300 ANT+ as it currently works, so that Smart Bike Lights doesn’t have to rely on Individual Light Network for basic control?
    Even just a minimal compatibility mode would be super helpful for users of this light.

    Thanks again for all your work — without your apps, I wouldn’t have even discovered how broken the ANT+ implementation was.

  • The FR300 ANT+ cannot receive firmware updates, so any fixes are unlikely.

    That is sad :/

    With that in mind, would it be possible on your side to support the FR300 ANT+ as it currently works, so that Smart Bike Lights doesn’t have to rely on Individual Light Network for basic control?

    Unfortunately, that isn’t possible. When using the native light network, the only available method for changing the light mode is the setMode function from the CIQ SDK. If setMode works only for turning the light off and not for other modes, there’s nothing I can do to fix that. Since the CIQ SDK is closed source, I can’t investigate why it behaves that way.

  • Thanks for the clarification.

    But just to confirm one thing — shouldn’t setMode at least work for the four modes that do function through the Garmin’s native Light Control page?
    (2 = steady 75%, 4 = steady 50%, 6 = flash, 7 = fast variable flash)

    Earlier in our testing, these four modes behaved consistently when triggered from Garmin’s own widget, so I assumed setMode() would be able to switch between them as well, even if the rest of the ANT+ implementation is broken.

    Is there something about the FR300’s ANT+ behavior that prevents setMode from working even with the modes that are recognized by Garmin?

  • shouldn’t setMode at least work for the four modes that do function through the Garmin’s native Light Control page?

    I would also assume the same, but for an unknown reason it does not work. I had the same issue in the past with See.Sense ICON2 light, where I was able to change the light mode with the Garmin widget, but not with the setMode function. That was the main reason why I created the Individual Light Network. 

    Earlier in our testing, these four modes behaved consistently when triggered from Garmin’s own widget, so I assumed setMode() would be able to switch between them as well, even if the rest of the ANT+ implementation is broken.

    Garmin light widget most likely does not use the CIQ SDK to control the light modes.

    Is there something about the FR300’s ANT+ behavior that prevents setMode from working even with the modes that are recognized by Garmin?

    I am not able to give a definitive answer because I don’t know where the issue lies, and I have no way to verify it. It’s possible that setMode isn’t sending the 34-data page (the command used to change the light mode) to the light, or that the light is rejecting the command. My guess is that the command is never actually sent, but that’s only speculation. Ravemen would be the ones who can confirm this.

  • Hi good people, I help me please. I am a regular consumer, I am I have magene at1200 smartligt and all I want is to setup it on edge 1030 so it takes advantages from the automatic mode. I tried to read all this posts here but I am confused how to setup it. Any link to any resource explaining what to do will be apretiated. I thank you.