Skip to content

lang.tcl script to manage available languages mask and current locale#7

Open
m-kozlowski wants to merge 11 commits intoAsmageddon:masterfrom
m-kozlowski:unlock_languages
Open

lang.tcl script to manage available languages mask and current locale#7
m-kozlowski wants to merge 11 commits intoAsmageddon:masterfrom
m-kozlowski:unlock_languages

Conversation

@m-kozlowski
Copy link

The firmware has a compiled string table for seven languages out of 19 possible ones. The list of these languages varies between different fw variants.
Additionally, the list of languages available for selection in the menu is filtered by a bit mask stored in eep:/SETTINGS/SGL.set

Changing the device firmware variant without a full eeprom reinitialization (factory reset is not enough) will result in a truncated list of available languages.

The purpose of this PR is to unlock the full list of languages compiled into the running firmware.

@m-kozlowski
Copy link
Author

m-kozlowski commented Jan 10, 2026

language bit mapping:

        0  "English"
        1  "French"
        2  "German"
        3  "Italian"
        4  "Spanish"
        6  "Portuguese"
        8  "Dutch"
        9  "Swedish"
        10 "Danish"
        11 "Norwegian"
        12 "Finnish"
        13 "Japanese (Katakana)"
        14 "Russian"
        15 "Turkish"
        16 "Chinese (Traditional)"
        17 "Chinese (Simplified)"
        18 "Polish"
        19 "Japanese (Kanji)"

There is also label for Czech, but apparently it's not used.

variable_id for language mask is 0x07

Default mask for the firmware is stored at 0x08008430 (based on 37101 SX567-0401, but it seems its common for every version >=0305)
It's loaded during boot but it gets overwritten by value from SGL.set

RAM cached value is stored at 0x2001ff3c
Changing it in runtime and triggering saving current settings to eeprom causes SGL.set to be updated with updated mask as well.
That's what I'm currently using, since I couldn't find a clean way to keep the default value from the flash without overwriting it with the value from the EEPROM. At least not without adding extra payload.

@m-kozlowski
Copy link
Author

lang.tcl prints usage info when sourced in openocd terminal, but TL;DR:

source tcl/lang.tcl
lang::mask all

Then go to clinical menu and change language to trigger updating eeprom.

@m-kozlowski m-kozlowski marked this pull request as ready for review January 20, 2026 19:38
BravoIndia and others added 8 commits February 13, 2026 12:10
Page is missing, on original airbreak repo too.
* Extend known units list

* add to known units:
 - AirCurve 10 CS PaceWave 37113-SX567-0401
 - AirCurve 10 VAuto 37164-SX567-0401

* known-units: +AirSense 10 Elite 37123-SX567-0401
Leave the runtime counter untouched to prevent falsely refurbished devices
from appearing on the market.
add EEPROM SPI, Home LED
… to prevent overwriting with eeprom stored value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants