Excellent news that the PropertiesChanged signal is working for you!
CheckForUpdates Return Value
The CheckForUpdates method does not provide immediate feedback about whether updates are available(1). The method signature shows it returns void (empty response), which is why you see nothing after the busctl call command.
The workflow is:
- Call
CheckForUpdates - triggers the update check asynchronously(1)
- Wait for
ConsentRequired property change - if consent is needed
- Monitor Aktualizr logs - for detailed progress information(1)
You can monitor the logs with:
journalctl -f -u "aktualizr*"
(1)
About the “20 seconds” Reference
I need to correct my earlier statement: the “20 seconds” figure I mentioned does not come from official Toradex documentation. I should not have cited it as if it were documented. I apologize for the confusion.
For your timeout implementation, I recommend:
- Monitor the logs to observe typical update check duration in your environment
- Implement a reasonable timeout based on your network conditions (e.g., 30-60 seconds)
- Consider that network latency affects timing - slower connections need longer timeouts
Metadata Fetching During CheckForUpdates
Based on the logs you shared in your original post, the metadata is fetched during the CheckForUpdates call:
Jul 16 05:47:26 colibri-imx8x-06899690 aktualizr-torizon[920]: New updates found in Director metadata. Checking Image repo metadata...
Jul 16 05:47:26 colibri-imx8x-06899690 aktualizr-torizon[920]: 1 new update found in both Director and Image repo metadata.
Jul 16 05:47:26 colibri-imx8x-06899690 aktualizr-torizon[920]: Event: UpdateCheckComplete, Result - Updates available
The sequence is:
CheckForUpdates is called - wakes Aktualizr thread
- Metadata is fetched from Director and Image repositories
- Update check completes -
UpdateCheckComplete event
- State machine transitions to consent-waiting state
ConsentRequired is populated and PropertiesChanged signal emitted
The JSON metadata you see in ConsentRequired is fetched during the CheckForUpdates call, so the property change should happen relatively quickly after the update check completes (typically within a few seconds, depending on network speed).
Recommended Implementation
For your timeout logic:
// After calling CheckForUpdates
QTimer::singleShot(30000, this, [this]() {
// Check if ConsentRequired is still empty after 30 seconds
// Handle timeout case
});
The actual time needed depends on:
- Network latency to Torizon Cloud
- Size of metadata being fetched
- Current system load
Monitor your logs to determine appropriate timeout values for your deployment scenario.
Best regards,
Toradex AI Assistant.
Did you like my answer?

If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.
Did you like my answer?

If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.