Signature check failed on file

I am using a self written data field for years but as my eyes getting older I renewed it and have produced a polished prg (without using eclipse/visual studio/app store) file with enlarged fonts. It works fine within the simulator (IQ 4.3.1) but when copying the file to the Garmin\Apps nothing happens. The log file on the watch says "Signature check failed on file..." and so the data field is ignored.

What can I do now?

      

  • As per this recent announcement, you need to build with SDK 7.4.3 (or higher) to sideload to devices with System 8 (CIQ 5.1.x) and recent firmware.

    Even if you have an older device, devs have seen issues with signature check failures in the past (predating that announcement), and I think these may also be related to building with an SDK that's too old.

    The easiest thing to do is to always use the latest production SDK whenever possible.

  • See https://forums.garmin.com/developer/connect-iq/b/news-announcements

    Side-Loading to System 8 Devices

    For System 8 devices receiving the 2025 Q2 QMR, any app that is being side-loaded to the device must be built with Connect IQ SDK 7.4.3 or greater. In July, we will be setting the minimum SDK version to 8.1 for uploading apps to the store.

    You need to use use a newer SDK.

    Here's a post from when it was only beta FW, but the beta is now production:

    https://forums.garmin.com/developer/connect-iq/f/discussion/410569/side-loading-connect-iq-apps-to-q2-beta-firmware-builds

  • Thanks to you all, just downloaded the new SDK...

    ...anyhow a little bit seems to have been changed over the years. In the early days (IQ 2 and so) I just used an editor and some simple batchfiles to make my programs. Doing this now I get an ERROR: null when doing the same as before (placed some dots instead of the full paths)...

    java -cp "...\v8.2\Bin\monkeybrains.jar"; com.garmin.monkeybrains.Monkeybrains -a "...\8.2\Bin\api.db" -u "...\v8.2\Bin\devices.xml" -o "BirdRunner.prg" -m "...\BirdRunner\Manifest.fr955.xml"  --release --device fr955 -z "...\BirdRunner\Resources\resources.fr955.xml" "...\BirdRunner\Source\BirdRunner.fr955.mc"  -y "...\Tools\MichaelVogel.der"

    Will play around, would be cool to be able to compile the codes as before without needing visual code and other tools.



  • Yes, a lot has definitely changed since CIQ 4.3.1.

    For one thing, devices.xml no longer exists:

    - device config/definitions are no longer tied to individual SDKs as they were in the past

    - there's a non-SDK-specific location for device config, and instead of being contained in a single XML file, each device has its own folder which consists of a couple of JSON files (compiler.json and simulator.json), as well as a few other files

    If I were you, I would first focus on getting the build to work with VS Code and the Monkey C extension.

    Once that works, you can use the following reference to set up your command line build environment:

    https://developer.garmin.com/connect-iq/reference-guides/monkey-c-command-line-setup/

    And you can use this page to see the list of currently supported compiler options:

    developer.garmin.com/.../

    I get an ERROR: null

    Btw, when this happens, it generally indicates that compiler crashed in some unexpected way. If you use a different JDK, it's possible that you may see a more detailed error message, which might be helpful in the cases that you want to report the error to Garmin.

    In this case, you're not using the compiler correctly (for example, "-u" is no longer a supported command line option, and "-f" is missing but it's required), so it's unsurprising that the compiler is crashing. (I'm not claiming that this is a user-friendly way for the compiler to fail ofc.

  • Thanks, meanwhile I was able to compile my program (and it was accepted by my watch).

    It will take a little bit more time to update all my batches (the simulator seems to have changed as well) but now I am quite happy again.

  • It will take a little bit more time to update all my batches

    The nice thing about the command line setup instructions is that they give you a way to reference the currently selected SDK (via the SDK manager), without hardcoding any SDK paths