Skip to content

Instantly share code, notes, and snippets.

@chrysalysm
Last active July 13, 2024 01:45
Show Gist options
  • Save chrysalysm/d292f104822c2ed4c797a78434362ad0 to your computer and use it in GitHub Desktop.
Save chrysalysm/d292f104822c2ed4c797a78434362ad0 to your computer and use it in GitHub Desktop.
SKY2040 Leverless Firmware Update Guide 0.7.x
HOW TO UPDATE YOUR SKY2040 README
=================================
https://gp2040-ce.info/
https://github.com/OpenStickCommunity/GP2040-CE
Tested from 0.7.3 to 0.7.7
- SKY2040 uses the default 'Raspberry Pi Pico' chip as of Jan 2024.
- You want the Pico version of the firmware: GP2040-CE_0.X.X_Pico.uf2
- You can find official GP2040 firmware here: https://gp2040-ce.info/downloads/download-page
- Updating the SKY2040 (and probably other older GP2040-CE leverless/hitboxes) can be problematic because importing old configs from an older GP2040 version may not import properly into newer versions.
- GP2040-CE specifically calls out in the backup config page that "Importing pin mappings from files prior to v0.7.6 has no effect."
- If you ordered your SKY2040 from China (AliExpress), it likely shipped with older firmware (<0.7.6) than what is current on the official GP2040 repository.
- MANUALLY entering in the proper configurations from clean settings after a configuration wipe seems to do the trick.
- Just in case something is different than what this guide describes, I recommended backing up your leverless GP2040 configuration.
1. Enter the webconfig mode before you flash/firmware update, and backup/export the current configs: http://192.168.7.1/backup
2. Take screenshots of every web configuration page, just in case.
1. Download [GP2040-CE_0.7.7_Pico.uf2] or whatever the latest GP2040 firmware is from: https://github.com/OpenStickCommunity/GP2040-CE/releases
2. Follow installation steps as normal: https://gp2040-ce.info/installation
- I recommend flash nuking before hand, but that is up to you. It isn't necessary unless issues occur.
3. Once the firmware update is done, reboot the leverless and set it back into the web configuration mode.
4. You can use the screenshots provided in the comments below to manually setup each configuration page.
Or use the reference backup config in this gists [sky2040_gp2040ce_backup_0_7_3_config.gp2040] as a guide.
- It is in JSON format, and is fairly human readable.
5. If you run into issues, I recommend you perform a full Reset Config in the "DANGER ZONE" and go back to Step 4.
6. I have included a backup of my SKY2040 0.7.7 configuration in this gists. Custom LED theme and add-ons are omitted.
- You can find the file below named: sky2040_gp2040ce_backup_0_7_7_config.gp2040
You can find my SKY2040 0.7.3 config backup for reference below: sky2040_gp2040ce_backup_0_7_3_config.gp2040
You can find my SKY2040 0.7.7 config backup for import: sky2040_gp2040ce_backup_0_7_7_config.gp2040
You can find my screenshots for each config page in the comments section below. Scroll all the way down.
Some Q&A in the comments section...
I have used this guide to update other leverless controllers running GP2040-CE as well.
- Sallybox
- Sallybox Plus
- RTU Mini Hitbox
{
"display": {
"enabled": 1,
"sdaPin": 0,
"sclPin": 1,
"i2cAddress": "0x3c",
"i2cBlock": 0,
"i2cSpeed": 400000,
"flipDisplay": 0,
"invertDisplay": 0,
"buttonLayout": 0,
"buttonLayoutRight": 3,
"splashMode": 3,
"splashChoice": 0,
"splashDuration": 7.5,
"displaySaverTimeout": 0,
"buttonLayoutCustomOptions": {
"params": {
"layout": 0,
"startX": 8,
"startY": 28,
"buttonRadius": 8,
"buttonPadding": 2
},
"paramsRight": {
"layout": 3,
"startX": 8,
"startY": 28,
"buttonRadius": 8,
"buttonPadding": 2
}
}
},
"gamepad": {
"dpadMode": 1,
"inputMode": 4,
"socdMode": 1,
"switchTpShareForDs4": 0,
"lockHotkeys": 0,
"fourWayMode": 0,
"fnButtonPin": -1,
"hotkey01": {
"auxMask": 0,
"buttonsMask": 66304,
"action": 4
},
"hotkey02": {
"auxMask": 0,
"buttonsMask": 131840,
"action": 1
},
"hotkey03": {
"auxMask": 0,
"buttonsMask": 262912,
"action": 2
},
"hotkey04": {
"auxMask": 0,
"buttonsMask": 525056,
"action": 3
},
"hotkey05": {
"auxMask": 0,
"buttonsMask": 70144,
"action": 6
},
"hotkey06": {
"auxMask": 0,
"buttonsMask": 135680,
"action": 7
},
"hotkey07": {
"auxMask": 0,
"buttonsMask": 266752,
"action": 8
},
"hotkey08": {
"auxMask": 0,
"buttonsMask": 528896,
"action": 10
},
"hotkey09": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey10": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey11": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey12": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"forcedSetupMode": 0
},
"led": {
"dataPin": 28,
"ledFormat": 0,
"ledLayout": 0,
"ledsPerButton": 1,
"brightnessMaximum": 50,
"brightnessSteps": 5,
"ledButtonMap": {
"Up": 3,
"Down": 1,
"Left": 0,
"Right": 2,
"B1": 8,
"B2": 9,
"B3": 4,
"B4": 5,
"L1": 7,
"R1": 6,
"L2": 11,
"R2": 10,
"S1": null,
"S2": null,
"L3": null,
"R3": null,
"A1": null,
"A2": null
},
"pledType": -1,
"pledPin1": -1,
"pledPin2": -1,
"pledPin3": -1,
"pledPin4": -1,
"pledColor": "#ffffff"
},
"ledTheme": {
"hasCustomTheme": 0,
"customTheme": {
"Up": {
"normal": "#000000",
"pressed": "#000000"
},
"Down": {
"normal": "#000000",
"pressed": "#000000"
},
"Left": {
"normal": "#000000",
"pressed": "#000000"
},
"Right": {
"normal": "#000000",
"pressed": "#000000"
},
"B1": {
"normal": "#000000",
"pressed": "#000000"
},
"B2": {
"normal": "#000000",
"pressed": "#000000"
},
"B3": {
"normal": "#000000",
"pressed": "#000000"
},
"B4": {
"normal": "#000000",
"pressed": "#000000"
},
"L1": {
"normal": "#000000",
"pressed": "#000000"
},
"R1": {
"normal": "#000000",
"pressed": "#000000"
},
"L2": {
"normal": "#000000",
"pressed": "#000000"
},
"R2": {
"normal": "#000000",
"pressed": "#000000"
},
"S1": {
"normal": "#000000",
"pressed": "#000000"
},
"S2": {
"normal": "#000000",
"pressed": "#000000"
},
"A1": {
"normal": "#000000",
"pressed": "#000000"
},
"A2": {
"normal": "#000000",
"pressed": "#000000"
},
"L3": {
"normal": "#000000",
"pressed": "#000000"
},
"R3": {
"normal": "#000000",
"pressed": "#000000"
}
}
},
"pinmappings": {
"Up": {
"pin": 2,
"key": 82,
"error": null
},
"Down": {
"pin": 3,
"key": 81,
"error": null
},
"Left": {
"pin": 5,
"key": 80,
"error": null
},
"Right": {
"pin": 4,
"key": 79,
"error": null
},
"B1": {
"pin": 6,
"key": 225,
"error": null
},
"B2": {
"pin": 7,
"key": 29,
"error": null
},
"B3": {
"pin": 10,
"key": 224,
"error": null
},
"B4": {
"pin": 11,
"key": 226,
"error": null
},
"L1": {
"pin": 13,
"key": 6,
"error": null
},
"R1": {
"pin": 12,
"key": 44,
"error": null
},
"L2": {
"pin": 9,
"key": 25,
"error": null
},
"R2": {
"pin": 8,
"key": 27,
"error": null
},
"S1": {
"pin": 16,
"key": 34,
"error": null
},
"S2": {
"pin": 17,
"key": 30,
"error": null
},
"L3": {
"pin": 18,
"key": 46,
"error": null
},
"R3": {
"pin": 19,
"key": 45,
"error": null
},
"A1": {
"pin": 20,
"key": 38,
"error": null
},
"A2": {
"pin": 21,
"key": 59,
"error": null
},
"Fn": {
"pin": -1,
"key": 0,
"error": null
}
},
"addons": {
"analogAdc1PinX": -1,
"analogAdc1PinY": -1,
"analogAdc1Mode": 1,
"analogAdc1Invert": 0,
"analogAdc2PinX": -1,
"analogAdc2PinY": -1,
"analogAdc2Mode": 2,
"analogAdc2Invert": 0,
"forced_circularity": 0,
"analog_deadzone": 5,
"auto_calibrate": 0,
"AnalogInputEnabled": 0,
"bootselButtonMap": 0,
"BootselButtonAddonEnabled": 0,
"buzzerPin": -1,
"buzzerVolume": 100,
"BuzzerSpeakerAddonEnabled": 0,
"dualDirDownPin": -1,
"dualDirUpPin": -1,
"dualDirLeftPin": -1,
"dualDirRightPin": -1,
"dualDirDpadMode": 0,
"dualDirCombineMode": 0,
"dualDirFourWayMode": 0,
"DualDirectionalInputEnabled": 0,
"tilt1Pin": -1,
"tilt2Pin": -1,
"tiltLeftAnalogUpPin": -1,
"tiltLeftAnalogDownPin": -1,
"tiltLeftAnalogLeftPin": -1,
"tiltLeftAnalogRightPin": -1,
"tiltRightAnalogUpPin": -1,
"tiltRightAnalogDownPin": -1,
"tiltRightAnalogLeftPin": -1,
"tiltRightAnalogRightPin": -1,
"tiltSOCDMode": 1,
"TiltInputEnabled": 0,
"extraButtonPin": -1,
"extraButtonMap": 0,
"ExtraButtonAddonEnabled": 0,
"i2cAnalog1219SDAPin": -1,
"i2cAnalog1219SCLPin": -1,
"i2cAnalog1219Block": 0,
"i2cAnalog1219Speed": 400000,
"i2cAnalog1219Address": 64,
"I2CAnalog1219InputEnabled": 0,
"sliderLSPin": -1,
"sliderRSPin": -1,
"JSliderInputEnabled": 0,
"playerNumber": 1,
"PlayerNumAddonEnabled": 0,
"reversePin": -1,
"reversePinLED": -1,
"reverseActionUp": 1,
"reverseActionDown": 1,
"reverseActionLeft": 1,
"reverseActionRight": 1,
"ReverseInputEnabled": 0,
"sliderSOCDPinOne": -1,
"sliderSOCDPinTwo": -1,
"sliderSOCDModeOne": 0,
"sliderSOCDModeTwo": 2,
"sliderSOCDModeDefault": 1,
"SliderSOCDInputEnabled": 0,
"onBoardLedMode": 0,
"BoardLedAddonEnabled": 0,
"turboPin": 14,
"turboPinLED": -1,
"turboShotCount": 15,
"shmupMode": 0,
"shmupMixMode": 0,
"shmupAlwaysOn1": 0,
"shmupAlwaysOn2": 0,
"shmupAlwaysOn3": 0,
"shmupAlwaysOn4": 0,
"pinShmupBtn1": -1,
"pinShmupBtn2": -1,
"pinShmupBtn3": -1,
"pinShmupBtn4": -1,
"shmupBtnMask1": 0,
"shmupBtnMask2": 0,
"shmupBtnMask3": 0,
"shmupBtnMask4": 0,
"pinShmupDial": -1,
"TurboInputEnabled": 1,
"wiiExtensionSDAPin": -1,
"wiiExtensionSCLPin": -1,
"wiiExtensionBlock": 0,
"wiiExtensionSpeed": 400000,
"WiiExtensionAddonEnabled": 0,
"PS4ModeAddonEnabled": 1,
"snesPadClockPin": -1,
"snesPadLatchPin": -1,
"snesPadDataPin": -1,
"SNESpadAddonEnabled": 0,
"KeyboardHostAddonEnabled": 0,
"keyboardHostPinDplus": -1,
"keyboardHostMap": {
"Up": {
"pin": 2,
"key": 82,
"error": null
},
"Down": {
"pin": 3,
"key": 81,
"error": null
},
"Left": {
"pin": 5,
"key": 80,
"error": null
},
"Right": {
"pin": 4,
"key": 79,
"error": null
},
"B1": {
"pin": 6,
"key": 225,
"error": null
},
"B2": {
"pin": 7,
"key": 29,
"error": null
},
"B3": {
"pin": 10,
"key": 224,
"error": null
},
"B4": {
"pin": 11,
"key": 226,
"error": null
},
"L1": {
"pin": 13,
"key": 6,
"error": null
},
"R1": {
"pin": 12,
"key": 44,
"error": null
},
"L2": {
"pin": 9,
"key": 25,
"error": null
},
"R2": {
"pin": 8,
"key": 27,
"error": null
},
"S1": {
"pin": 16,
"key": 34,
"error": null
},
"S2": {
"pin": 17,
"key": 30,
"error": null
},
"L3": {
"pin": 18,
"key": 46,
"error": null
},
"R3": {
"pin": 19,
"key": 45,
"error": null
},
"A1": {
"pin": 20,
"key": 38,
"error": null
},
"A2": {
"pin": 21,
"key": 59,
"error": null
},
"Fn": {
"pin": -1,
"key": 0,
"error": null
}
},
"focusModePin": -1,
"focusModeButtonLockMask": 0,
"focusModeButtonLockEnabled": 0,
"focusModeOledLockEnabled": 0,
"focusModeRgbLockEnabled": 0,
"FocusModeAddonEnabled": 0
}
}
{
"display": {
"enabled": 1,
"i2cAddress": "0x3c",
"i2cBlock": 0,
"flipDisplay": 0,
"invertDisplay": 0,
"buttonLayout": 1,
"buttonLayoutRight": 1,
"splashMode": 3,
"splashChoice": 0,
"splashDuration": 7,
"displaySaverTimeout": 0,
"turnOffWhenSuspended": 0,
"buttonLayoutCustomOptions": {
"params": {
"layout": 0,
"startX": 8,
"startY": 28,
"buttonRadius": 8,
"buttonPadding": 2
},
"paramsRight": {
"layout": 3,
"startX": 8,
"startY": 28,
"buttonRadius": 8,
"buttonPadding": 2
}
}
},
"splash": {
"splashImage": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
32,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
64,
128,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
224,
223,
192,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2,
193,
255,
160,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
31,
207,
254,
128,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
63,
255,
224,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
127,
171,
192,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
44,
0,
0,
251,
131,
255,
0,
0,
0,
0,
0,
0,
0,
0,
12,
1,
255,
0,
1,
243,
7,
252,
0,
0,
0,
0,
0,
0,
0,
0,
28,
7,
255,
0,
3,
224,
63,
244,
0,
0,
0,
0,
0,
0,
0,
44,
56,
10,
231,
128,
3,
192,
95,
128,
0,
0,
0,
0,
32,
7,
129,
255,
57,
195,
199,
1,
215,
128,
63,
0,
0,
0,
0,
0,
224,
31,
231,
255,
121,
199,
135,
159,
167,
128,
110,
60,
0,
0,
0,
160,
192,
63,
234,
231,
243,
239,
7,
127,
199,
1,
207,
255,
128,
0,
3,
143,
252,
127,
195,
199,
127,
254,
15,
126,
143,
135,
223,
252,
0,
0,
15,
255,
255,
115,
199,
135,
255,
222,
14,
80,
7,
31,
31,
208,
0,
0,
31,
87,
255,
231,
143,
7,
255,
28,
62,
0,
15,
255,
127,
0,
0,
0,
126,
11,
143,
143,
142,
15,
255,
158,
124,
0,
7,
253,
252,
0,
0,
0,
124,
55,
159,
31,
30,
15,
135,
30,
248,
0,
7,
240,
48,
0,
0,
0,
241,
247,
254,
30,
28,
62,
14,
31,
240,
0,
1,
64,
40,
0,
0,
1,
239,
231,
248,
60,
62,
124,
15,
31,
224,
0,
0,
0,
0,
0,
0,
3,
255,
143,
240,
127,
254,
248,
14,
15,
128,
0,
0,
0,
0,
0,
0,
3,
255,
207,
192,
255,
255,
240,
12,
0,
0,
0,
0,
0,
0,
0,
0,
7,
139,
255,
1,
255,
143,
192,
6,
0,
0,
0,
0,
0,
0,
0,
0,
7,
135,
254,
1,
254,
15,
128,
4,
0,
0,
0,
0,
0,
0,
0,
0,
7,
31,
222,
3,
240,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
7,
191,
158,
1,
192,
0,
0,
4,
0,
0,
0,
0,
0,
0,
0,
0,
7,
255,
156,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
7,
251,
56,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
3,
231,
48,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
71,
40,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
14,
32,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
12,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
4,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
8,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
},
"gamepad": {
"dpadMode": 0,
"inputMode": 4,
"socdMode": 1,
"switchTpShareForDs4": 0,
"lockHotkeys": 0,
"fourWayMode": 0,
"profileNumber": 1,
"ps4ControllerType": 0,
"debounceDelay": 5,
"inputModeB1": 1,
"inputModeB2": 0,
"inputModeB3": 2,
"inputModeB4": 4,
"inputModeL1": -1,
"inputModeL2": -1,
"inputModeR1": -1,
"inputModeR2": 3,
"ps4ReportHack": 0,
"fnButtonPin": -1,
"hotkey01": {
"auxMask": 0,
"buttonsMask": 66304,
"action": 4
},
"hotkey02": {
"auxMask": 0,
"buttonsMask": 131840,
"action": 1
},
"hotkey03": {
"auxMask": 0,
"buttonsMask": 262912,
"action": 2
},
"hotkey04": {
"auxMask": 0,
"buttonsMask": 525056,
"action": 3
},
"hotkey05": {
"auxMask": 0,
"buttonsMask": 70144,
"action": 6
},
"hotkey06": {
"auxMask": 0,
"buttonsMask": 135680,
"action": 7
},
"hotkey07": {
"auxMask": 0,
"buttonsMask": 266752,
"action": 8
},
"hotkey08": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey09": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey10": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey11": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey12": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey13": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey14": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey15": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"hotkey16": {
"auxMask": 0,
"buttonsMask": 0,
"action": 0
},
"forcedSetupMode": 0
},
"led": {
"dataPin": 28,
"ledFormat": 0,
"ledLayout": 0,
"ledsPerButton": 1,
"brightnessMaximum": 64,
"brightnessSteps": 5,
"turnOffWhenSuspended": 0,
"ledButtonMap": {
"Up": 3,
"Down": 1,
"Left": 0,
"Right": 2,
"B1": 8,
"B2": 9,
"B3": 4,
"B4": 5,
"L1": 7,
"R1": 6,
"L2": 11,
"R2": 10,
"S1": null,
"S2": null,
"L3": null,
"R3": null,
"A1": null,
"A2": null
},
"pledType": -1,
"pledPin1": -1,
"pledPin2": -1,
"pledPin3": -1,
"pledPin4": -1,
"pledIndex1": -1,
"pledIndex2": -1,
"pledIndex3": -1,
"pledIndex4": -1,
"pledColor": "#ffffff"
},
"ledTheme": {
"hasCustomTheme": 1,
"customTheme": {
"Up": {
"normal": "#33cce6",
"pressed": "#cc3399"
},
"Down": {
"normal": "#33cce6",
"pressed": "#cc3399"
},
"Left": {
"normal": "#00ffff",
"pressed": "#ff0080"
},
"Right": {
"normal": "#6699cc",
"pressed": "#9966b3"
},
"B1": {
"normal": "#9966b3",
"pressed": "#6699cc"
},
"B2": {
"normal": "#cc3399",
"pressed": "#33cce6"
},
"B3": {
"normal": "#9966b3",
"pressed": "#6699cc"
},
"B4": {
"normal": "#cc3399",
"pressed": "#33cce6"
},
"L1": {
"normal": "#ff0080",
"pressed": "#00ffff"
},
"R1": {
"normal": "#ff0080",
"pressed": "#00ffff"
},
"L2": {
"normal": "#ff0080",
"pressed": "#00ffff"
},
"R2": {
"normal": "#ff0080",
"pressed": "#00ffff"
},
"S1": {
"normal": "#000000",
"pressed": "#000000"
},
"S2": {
"normal": "#000000",
"pressed": "#000000"
},
"A1": {
"normal": "#000000",
"pressed": "#000000"
},
"A2": {
"normal": "#000000",
"pressed": "#000000"
},
"L3": {
"normal": "#000000",
"pressed": "#000000"
},
"R3": {
"normal": "#000000",
"pressed": "#000000"
}
}
},
"macros": {
"macroList": [
{
"enabled": 0,
"exclusive": 1,
"interruptible": 1,
"showFrames": 0,
"macroType": 1,
"useMacroTriggerButton": 0,
"macroTriggerPin": -1,
"macroTriggerButton": 0,
"macroLabel": "",
"macroInputs": []
},
{
"enabled": 0,
"exclusive": 1,
"interruptible": 1,
"showFrames": 0,
"macroType": 1,
"useMacroTriggerButton": 0,
"macroTriggerPin": -1,
"macroTriggerButton": 0,
"macroLabel": "",
"macroInputs": []
},
{
"enabled": 0,
"exclusive": 1,
"interruptible": 1,
"showFrames": 0,
"macroType": 1,
"useMacroTriggerButton": 0,
"macroTriggerPin": -1,
"macroTriggerButton": 0,
"macroLabel": "",
"macroInputs": []
},
{
"enabled": 0,
"exclusive": 1,
"interruptible": 1,
"showFrames": 0,
"macroType": 1,
"useMacroTriggerButton": 0,
"macroTriggerPin": -1,
"macroTriggerButton": 0,
"macroLabel": "",
"macroInputs": []
},
{
"enabled": 0,
"exclusive": 1,
"interruptible": 1,
"showFrames": 0,
"macroType": 1,
"useMacroTriggerButton": 0,
"macroTriggerPin": -1,
"macroTriggerButton": 0,
"macroLabel": "",
"macroInputs": []
},
{
"enabled": 0,
"exclusive": 1,
"interruptible": 1,
"showFrames": 0,
"macroType": 1,
"useMacroTriggerButton": 0,
"macroTriggerPin": -1,
"macroTriggerButton": 0,
"macroLabel": "",
"macroInputs": []
}
],
"macroPin": -1,
"macroBoardLedEnabled": 1,
"InputMacroAddonEnabled": 0
},
"pins": {
"pin00": 0,
"pin01": 0,
"pin02": 1,
"pin03": 2,
"pin04": 4,
"pin05": 3,
"pin06": 5,
"pin07": 6,
"pin08": 12,
"pin09": 11,
"pin10": 7,
"pin11": 8,
"pin12": 10,
"pin13": 9,
"pin14": -10,
"pin15": -10,
"pin16": 13,
"pin17": 14,
"pin18": 17,
"pin19": 18,
"pin20": 15,
"pin21": 16,
"pin22": -10,
"pin23": -10,
"pin24": -10,
"pin25": -10,
"pin26": -10,
"pin27": -10,
"pin28": 0,
"pin29": -10
},
"profiles": [
{
"pin00": 0,
"pin01": 0,
"pin02": 1,
"pin03": 2,
"pin04": 4,
"pin05": 3,
"pin06": 5,
"pin07": 6,
"pin08": 12,
"pin09": 11,
"pin10": 7,
"pin11": 8,
"pin12": 10,
"pin13": 9,
"pin14": -10,
"pin15": -10,
"pin16": 13,
"pin17": 14,
"pin18": 17,
"pin19": 18,
"pin20": 15,
"pin21": 16,
"pin22": -10,
"pin23": -10,
"pin24": -10,
"pin25": -10,
"pin26": -10,
"pin27": -10,
"pin28": 0,
"pin29": -10
},
{
"pin00": 0,
"pin01": 0,
"pin02": 1,
"pin03": 2,
"pin04": 4,
"pin05": 3,
"pin06": 5,
"pin07": 6,
"pin08": 12,
"pin09": 11,
"pin10": 7,
"pin11": 8,
"pin12": 10,
"pin13": 9,
"pin14": -10,
"pin15": -10,
"pin16": 13,
"pin17": 14,
"pin18": 17,
"pin19": 18,
"pin20": 15,
"pin21": 16,
"pin22": -10,
"pin23": -10,
"pin24": -10,
"pin25": -10,
"pin26": -10,
"pin27": -10,
"pin28": 0,
"pin29": -10
},
{
"pin00": 0,
"pin01": 0,
"pin02": 1,
"pin03": 2,
"pin04": 4,
"pin05": 3,
"pin06": 5,
"pin07": 6,
"pin08": 12,
"pin09": 11,
"pin10": 7,
"pin11": 8,
"pin12": 10,
"pin13": 9,
"pin14": -10,
"pin15": -10,
"pin16": 13,
"pin17": 14,
"pin18": 17,
"pin19": 18,
"pin20": 15,
"pin21": 16,
"pin22": -10,
"pin23": -10,
"pin24": -10,
"pin25": -10,
"pin26": -10,
"pin27": -10,
"pin28": 0,
"pin29": -10
}
],
"addons": {
"analogAdc1PinX": -1,
"analogAdc1PinY": -1,
"analogAdc1Mode": 1,
"analogAdc1Invert": 0,
"analogAdc2PinX": -1,
"analogAdc2PinY": -1,
"analogAdc2Mode": 2,
"analogAdc2Invert": 0,
"forced_circularity": 0,
"analog_deadzone": 5,
"auto_calibrate": 0,
"AnalogInputEnabled": 0,
"bootselButtonMap": 0,
"BootselButtonAddonEnabled": 0,
"buzzerPin": -1,
"buzzerVolume": 100,
"BuzzerSpeakerAddonEnabled": 0,
"dualDirDpadMode": 0,
"dualDirCombineMode": 0,
"dualDirFourWayMode": 0,
"DualDirectionalInputEnabled": 0,
"tilt1Pin": -1,
"factorTilt1LeftX": 35,
"factorTilt1LeftY": 35,
"factorTilt1RightX": 35,
"factorTilt1RightY": 35,
"tilt2Pin": -1,
"factorTilt2LeftX": 65,
"factorTilt2LeftY": 65,
"factorTilt2RightX": 65,
"factorTilt2RightY": 65,
"tiltLeftAnalogUpPin": -1,
"tiltLeftAnalogDownPin": -1,
"tiltLeftAnalogLeftPin": -1,
"tiltLeftAnalogRightPin": -1,
"tiltRightAnalogUpPin": -1,
"tiltRightAnalogDownPin": -1,
"tiltRightAnalogLeftPin": -1,
"tiltRightAnalogRightPin": -1,
"tiltSOCDMode": 1,
"TiltInputEnabled": 0,
"i2cAnalog1219Block": 0,
"i2cAnalog1219Address": 64,
"I2CAnalog1219InputEnabled": 0,
"sliderModeZero": 0,
"JSliderInputEnabled": 0,
"playerNumber": 1,
"PlayerNumAddonEnabled": 0,
"reversePin": -1,
"reversePinLED": -1,
"reverseActionUp": 0,
"reverseActionDown": 0,
"reverseActionLeft": 0,
"reverseActionRight": 0,
"ReverseInputEnabled": 0,
"sliderSOCDModeDefault": 1,
"SliderSOCDInputEnabled": 0,
"onBoardLedMode": 0,
"BoardLedAddonEnabled": 0,
"turboPinLED": -1,
"turboShotCount": 15,
"shmupMode": 0,
"shmupMixMode": 0,
"shmupAlwaysOn1": 0,
"shmupAlwaysOn2": 0,
"shmupAlwaysOn3": 0,
"shmupAlwaysOn4": 0,
"pinShmupBtn1": -1,
"pinShmupBtn2": -1,
"pinShmupBtn3": -1,
"pinShmupBtn4": -1,
"shmupBtnMask1": 0,
"shmupBtnMask2": 0,
"shmupBtnMask3": 0,
"shmupBtnMask4": 0,
"pinShmupDial": -1,
"TurboInputEnabled": 0,
"wiiExtensionBlock": 0,
"WiiExtensionAddonEnabled": 0,
"PS4ModeAddonEnabled": 1,
"snesPadClockPin": -1,
"snesPadLatchPin": -1,
"snesPadDataPin": -1,
"SNESpadAddonEnabled": 0,
"inputHistoryLength": 21,
"InputHistoryAddonEnabled": 0,
"inputHistoryCol": 0,
"inputHistoryRow": 7,
"KeyboardHostAddonEnabled": 0,
"keyboardHostMap": {
"Up": {
"pin": -1,
"key": 82,
"error": null
},
"Down": {
"pin": -1,
"key": 81,
"error": null
},
"Left": {
"pin": -1,
"key": 80,
"error": null
},
"Right": {
"pin": -1,
"key": 79,
"error": null
},
"B1": {
"pin": -1,
"key": 225,
"error": null
},
"B2": {
"pin": -1,
"key": 29,
"error": null
},
"B3": {
"pin": -1,
"key": 224,
"error": null
},
"B4": {
"pin": -1,
"key": 226,
"error": null
},
"L1": {
"pin": -1,
"key": 6,
"error": null
},
"R1": {
"pin": -1,
"key": 44,
"error": null
},
"L2": {
"pin": -1,
"key": 25,
"error": null
},
"R2": {
"pin": -1,
"key": 27,
"error": null
},
"S1": {
"pin": -1,
"key": 34,
"error": null
},
"S2": {
"pin": -1,
"key": 30,
"error": null
},
"L3": {
"pin": -1,
"key": 46,
"error": null
},
"R3": {
"pin": -1,
"key": 45,
"error": null
},
"A1": {
"pin": -1,
"key": 38,
"error": null
},
"A2": {
"pin": -1,
"key": 59,
"error": null
},
"Fn": {
"pin": -1,
"key": 0,
"error": null
}
},
"PSPassthroughAddonEnabled": 0,
"XBOnePassthroughAddonEnabled": 0,
"focusModePin": -1,
"focusModeButtonLockMask": 0,
"focusModeButtonLockEnabled": 0,
"focusModeMacroLockEnabled": 1,
"FocusModeAddonEnabled": 0
}
}
@chrysalysm
Copy link
Author

chrysalysm commented Mar 6, 2024

Q: I lost my OLED screen display after the firmware update.

A: You need to re-configure the OLED screen by first setting the proper Peripheral Mapping settings and then the correct Display Configuration.

  1. Set your stick in webconfig mode.
  2. Go to Peripheral Mapping: http://192.168.7.1/peripheral-mapping
  3. Enable I2C0. Set SDA to 0, and SCL to 1. Speed to Fast - 400000. Image below.
    image
    Setting a slower speed might cause issues.
    Remember to click SAVE!
  4. Next go to Display Configuration: http://192.168.7.1/display-config
  5. Enable the Hardware Options, set I2C Block to i2c0, I2C Address to 0x3c.
    image
    Follow the rest of the configs if you wish. Or upload your own splash.
    Remember to click SAVE!
  6. Reboot and your display should be back.

@chrysalysm
Copy link
Author

chrysalysm commented Mar 6, 2024

Q: I lost my RGB LED light configuration after the firmware update.

A: You just need to reconfigure the RGB LED Configuration with the right settings.

SKY2040 uses Data Pin 28 for its RGB LEDs.

  1. Set your stick into webconfig mode.
  2. Go to http://192.168.7.1/led-config
  3. Set Data Pin (-1 for disabled) to 28.
  4. LED Format is GRB.
  5. LED Layout is 8-Button Layout.
  6. LEDs Per Button is 1. I believe it still works if you set 2. Just make sure if you use custom LEDs, you stick with 1 or 2.
  7. Max Brightness can be any number. Really up to you. I don't like my LEDs going 100% all the time so I set them at 64.
  8. Brightness Steps set to 5.
  9. Follow the RGB LED Button Order from the image below.
    image
  10. Remember to click SAVE! Reboot and you're done.
  11. After reboot you should see LEDs back and you can use the Next Animation RGB LED Hotkey to cycle through Animations. https://gp2040-ce.info/rgb-leds

To customize your own LED themes: http://192.168.7.1/custom-theme
Documentation for LED Custom Theme: https://gp2040-ce.info/web-configurator/menu-pages/custom-led-theme

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment