For anyone who is interested in editing their Edge Activity Profile screens and data fields on a computer vs the Edge itself, this project may have what you’re looking for.
github.com/.../Activity-Profile-Editor
I only have my own Edge 530 to test this on, so the confirmed field IDs, screen types, and layouts are all specific to that model. The underlying screen/data-field mechanism looks like it should carry over to other Edge models (same 10-field-per-screen cap, same layout patterns from what I've seen in demo videos of newer touchscreen units), but that's unconfirmed without real testing on other hardware — collaboration from anyone with a different model would help a lot.
You can use it in purely a “read” mode, if you just want to start by viewing existing Profiles. The deploy method pushes the changed Activity Profile .fit files through the NewFiles folder/restart mechanism to make the changes.
Here are the features that are built into this toolkit and available in the GUI:
- Cloning - copy an existing Activity Profile to a new name
- Backups - backup Activity Profiles to local disk
- Backup pruning - delete old backups
- Change Screens - Add/Delete/Reorder/Hide/Layout-A/B
- Data Fields - Add/Delete/reorder/Modify the data fields within a screen
- Startup.txt - Change the text and display timer value of the boot message file
- Restore - restore a deleted Activity Profile if it was previously backed up by the toolkit
- Import - import a Profile from another source or other backup method
- Favorite - save a favorite screen to reuse/transfer to another Activity Profile
The code is written in Python and uses the garmin-fit-sdk and wxPython for the GUI interface.
There are also a set of CLI tools, in case you want to use individual aspects of the toolkit without the gui_app.
The tools are compatible with MacOS (tested on MacOS 26) as well as Windows (tested on Win 11). It was also tested on Win 10 - 32-bit, but requires manual install of the Python version and the wxPython (see the README for those details).
Here’s a sample output of a couple of the cli tools:
% python3 garmin_device.py detect
Garmin device found at: /Volumes/GARMIN/Garmin
Manufacturer: garmin
Product: edge_530
Serial: xxxxxxxxxxxx <-not showing my actual serial number
Software version: 981
% python3 fit_dump.py screens ./CyclingRoadClonebox.fit
=== Screen order as viewed on-device (reorderable via --swap-order) ===
POS SLOT CNT LAY FLAG TYPE FIELDS
1 [ 0] 6f B Screen 1 Timer, Distance, Power Graph, Heart Rate Graph, Speed, Cadence
2 [ 7] 7f Screen 4 Cadence Bars, Lap HR, Last Lap HR, EPOC, HR Zone Graph, Anaerobic TE, Aerobic Training Effect
3 [ 1] 2f Lap Summary Speed, Distance
4 [ 2] 0f Map
5 [ 3] 2f Elevation Percent Grade, Elevation (ft)
6 [ 8] 0f GroupTrack List
7 [13] 2f ClimbPro Percent Grade, Elevation (ft)
8 [ 4] 2f Cycling Dynamics Power Phase Left, Power Phase Right
9 [ 5] 2f Screen 2 Avg Speed, HR Zone Graph
10 [ 6] 7f Screen 3 Speed Bars, HR Bars, Power Bars, Lap HR, Last Lap HR, Lap %Max HR, Respiration
11 [ 9] 10f Screen 5 Lap Time, Odometer, Dest. Ahead, Lap Dist., Last Lap Speed, Total Descent, Lap Speed, Reps to Go, Lap Power, Target Power
12 [11] 10f Screen 6 Target, Step Time, Duration, Workout Comparison, Workout Step, Light Battery, Last Lap Power, Lap Time Standing, Lap Time Seated, Avg PCO
Also, here's a few screen shots of the GUI





