José Rebelo
6961ff77db
Sinilink: Initial support
...
Developed and tested against the XY-AP50L
2026-05-17 09:13:29 +01:00
José Rebelo and José Rebelo
c1f5647b6f
Huawei: Allow encryption to be enabled / disabled
2026-05-17 00:46:18 +02:00
José Rebelo
e93d6105bf
Merge pull request 'Pebble: Fix pebble time 2 and core 2 duo not immediately showing up in device list' ( #6124 )
...
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/6124
2026-05-16 22:15:31 +02:00
José Rebelo
122f0bacb7
Anker Soundcore Sport X20: Reuse some equalizer strings
2026-05-16 21:11:24 +01:00
duhow and José Rebelo
b8f5440a59
Anker: Add new device Soundcore Sport X20 ( #5987 )
...
This is an almost full implementation for [Anker](https://gadgetbridge.org/gadgets/headphones/anker/ ) [Soundcore Sport X20](https://www.soundcore.com/products/a3968-sport-x20-earbuds ) earbuds.
Provides:
- Firmware version and serial number
- Display battery life when sent by earbuds
- ANC Settings
- Find Device
- Equalizer with Presets
- 3D Surrounding Sound
- Toggle "Touch Tone" (sound when button is pressed)
- Set the behavior of button actions
- Set Auto Power-Off Timer
- Enable discovery/pairing to add a second device to use the earbuds
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/5987
2026-05-16 22:11:02 +02:00
Benjamin Temple
f95273100e
Pebble: Fix pebble time 2 and core 2 duo not immediately showing up in device list
2026-05-16 12:02:09 -07:00
José Rebelo
c1d8fce4d3
Add setting to enable TRACE log level
2026-05-16 18:48:03 +01:00
José Rebelo
4761716bea
Health Connect: Move per-sample logging to TRACE
2026-05-16 18:47:38 +01:00
José Rebelo
d1f5531217
Prevent crash on devices without GPS
2026-05-16 18:09:57 +01:00
José Rebelo
37ad178dac
Redmi Buds 6: Initial support
2026-05-16 17:54:51 +01:00
dependency-bot and José Rebelo
5f1f28cd3e
Update dependency org.slf4j:slf4j-api to v2.0.18
2026-05-16 14:38:03 +01:00
dependency-bot and José Rebelo
4759fe76b1
Update kotlin monorepo to v2.3.21
2026-05-16 10:17:36 +02:00
dependency-bot and José Rebelo
e72093fa52
Update dependency androidx.work:work-runtime-ktx to v2.11.2
2026-05-16 10:16:22 +02:00
dependency-bot and José Rebelo
05316837f3
Update dependency org.msgpack:msgpack-core to v0.9.12
2026-05-16 10:15:41 +02:00
Steffen Winter and José Rebelo
252779596a
Gradle: Migrate GBDaoGenerator build file to Kotlin DSL
2026-05-16 09:52:52 +02:00
Steffen Winter
8a5309f269
Renovate: Keep guava on -android tags
2026-05-16 01:07:10 +02:00
José Rebelo
5ffd6b6074
Set mimeType when sharing files
2026-05-15 23:09:10 +01:00
José Rebelo
bb97a90909
GpxReceiver: Set mimeType to application/gpx+xml
2026-05-15 23:08:52 +01:00
dependency-bot and José Rebelo
8b3cfaa1ee
Update dependency gradle to v9.5.1
2026-05-15 23:16:38 +02:00
Steffen Winter
5752a2bf96
Gradle: Migrate top-level build files to Kotlin DSL
...
Migrate the top-level build files to the new Kotlin DSL and use the new
pluginManagement block instead of the old buildscript.
2026-05-15 22:08:56 +02:00
Steffen Winter and José Rebelo
d33ada370f
Gradle: Migrate to version catalog
2026-05-15 22:02:12 +02:00
José Rebelo
7ba726c523
flake.nix: Override sdk from local.properties if present
2026-05-15 20:45:19 +01:00
Davide Gessa and José Rebelo
491f214611
Casio GBD200 device support ( #6070 )
...
In this pull request I separated the implementation of the GBD200 from the common implementation of GBX100 since during protocol reverse engineering (done here: github.com/dakk/casio-gshock-bt-proto/) I've found some discrepancies in the BLE protocol, and in my opinion it is better to separate since they are too different in many ways.
The flow works from initial pairing, connection, workout / step sync, configuration sync.
The following feature has been implemented and tested:
- [x] Watch connection and handshake
- [x] Config sync
- [x] Goal settings
- [x] Phone finder
- [x] Sport activity start and stop events
- [x] Sport activity sync with segment data
- [x] Step data sync
- [x] Notifications
- [x] Sport activity and OpenTracks
- [x] Alarm setting
Non Casio related edit:
- OpenTracksController.saveToGpx now handles empty activity (since gbd200 has no gps, and cannot handle gps data, running GBLocationService would be useless)
It should also address some of the following issues:
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/5529
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/2634
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/2597
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/5096
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/3395
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/2602
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/4095
- https://codeberg.org/Freeyourgadget/Gadgetbridge/issues/4092
- (test all the GBD200 related issues https://codeberg.org/Freeyourgadget/Gadgetbridge/issues?state=open&type=all&labels=&milestone=0&project=0&assignee=0&poster=0&sort=relevance&q=GBD-200 )
Todo:
- [x] Test for some day on my wrist




Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/6070
2026-05-15 21:28:35 +02:00
José Rebelo
22859347f8
Redmi Watch Move: Initial support
2026-05-15 18:23:24 +01:00
José Rebelo
4ad2284d5f
Merge pull request 'Pebble: Include battery read in pull-to-refresh update' ( #6110 )
...
Reviewed-on: https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/6110
2026-05-15 13:48:49 +02:00
Dany Mestas and José Rebelo
e0820f106f
AlarmClockReceiver: populate spec so notifications render on Xiaomi
...
Previously sourceAppId, title, and body were left null and sourceName
was the literal "ALARMCLOCKRECEIVER", causing Xiaomi watches to drop
the alarm-fire notification (the watch falls back to Gadgetbridge's own
package id which is not on the app allowlist, and the spec has nothing
to display).
Plumb the captured clock-app package (com.android.deskclock or
com.google.android.deskclock) through sendAlarm so:
- sourceAppId carries the real clock package
- sourceName is the resolved application label (NotificationUtils.getApplicationLabel)
- title = "Alarm" (R.string.menuitem_alarm)
- body = current time formatted via DateFormat
Strict improvement for all device families; Huami/ZeppOs previously
also displayed the alarm with empty title/body.
2026-05-15 13:48:35 +02:00
MrYoranimo
a16b90f6aa
Xiaomi-protobuf: combine installed apps and watchface cache when reporting installed apps
...
Because the list of installed apps and the list of installed faces are
requested from Xiaomi devices separately, a race condition will occur if
the lists are not combined: when processing the AppInfo event, all
previously known installed apps are removed from the app manager cache, which
will cause either all apps or all faces to get forgotten.
2026-05-15 01:21:20 +02:00
José Rebelo
d5643468b9
iGPSPORT: Update install notification progress
2026-05-14 23:49:03 +01:00
José Rebelo
81ab123c32
iGPSPORT: Improve upload progress
2026-05-14 23:46:29 +01:00
Benjamin Temple
12db34cf90
Pebble: Include battery read in pull-to-refresh update
2026-05-14 15:38:02 -07:00
José Rebelo
cbd92ef6fe
update changelog, bump version
2026-05-14 21:12:43 +01:00
Benjamin Temple
552547ec9e
Pebble: Add support for pull to refresh for pebble health data
...
Only signalActivityDataFinish on error as datalog will invoke once health sync data finishes syncing
2026-05-13 23:24:41 -07:00
Vitaliy Tomin and José Rebelo
57154dff91
igpsport: Hide watchface tab
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
179e04beb1
igpsport: Fix endless loop when there is no route files
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
40401492fa
igpsport: Handle null values in MusicSpec
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
519b17647b
igpsport: Add BSC300
2026-05-13 23:33:24 +02:00
Thomas Kuehne and José Rebelo
85543cb4c6
igpsport: Rebase to current master
2026-05-13 23:33:24 +02:00
Michael Plattner and José Rebelo
b52e2312b2
feat: add activity fetching
...
- activate supportsDataFetching and recorded activities, to download fit files from device
- sync fit files, but do it only from the last sync time that we do not always sync all the fit files
2026-05-13 23:33:24 +02:00
Michael Plattner and José Rebelo
bad96e4f75
feat: add binavi air
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
26e162ec68
igpsport: Rebase to current master
...
* Updated for new units preference logic
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
ad1ff7250d
igpsport: Split iGS630S to its own coordinator
...
* minor log fix
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
6255057772
igpsport: Removed all RuntimeException from igpsport and minor fixes
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
5f9114c221
igpsport: Mark device names non-translatable
2026-05-13 23:33:24 +02:00
Thomas Kuehne and José Rebelo
2d36bda559
igpsport: Update for current master rebase
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
5216752665
igpsport: Use GarminWorkoutParser
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
d3103400fc
igpsport: Add missing return after download data
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
9a2b5a38ac
igpsport: Use Garmin FitImporter and FitAsyncProcessor
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
77f4a99ed5
igpsport: Remove unused loggers and commented code
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
0046666f19
igpsport: update strings s/IGPSPORT/iGPSPORT/
2026-05-13 23:33:24 +02:00
Vitaliy Tomin and José Rebelo
bab5311d7f
igpsport: Copy FitAsyncProcessor from Garmin
2026-05-13 23:33:24 +02:00