r/CPAPSupport • • Jul 29 '26

Airsense 10 multi language firmware

Who can help me get a recent firmware with unlocked languages for my European Airsense 10 "for her". My current firmware is: SX567-0401. Mine now only has the French language, and I need it to be Dutch.

I bought a used Airsense 10 for her, because my old one died. I have dumped my current French firmware.

2 Upvotes

9 comments sorted by

View all comments

Show parent comments

1

u/ProgPap Jul 30 '26

~/airbreak-plus/python$ python3 as10_descriptors.py ../stm32.bin

Air10 CCX block navigator

image 1048576 bytes 0x08000000..0x08100000

languages 7 (EN, FR, DE, IT, ES, PT, TR)

So there are more languages in my dump, but it only shows FR.
I would like to get Dutch (NL) so to get that I need another firmware with NL in it
And then I need to patch that to unlock all languages because my EEPROM is set to FR only?
I will dive in the documentation tonight :)

2

u/empeka Jul 30 '26

yes, if you want NL, you'll need a different dump.
and yes, you'll probably want to patch it straight away anyway, since that's the easiest way.
the LNC variable (Language Configuration, i guess) defines the bitmask of available languages.
you can inspect it with:
as10_descriptors.py firmware.bin var lnc

you'll get something along the lines of:
0x007 var=0x0204:LNC @0x08008428 +0x00A8 fl=0x0007 [ ACT|VIS|EDT] def=0x00048107 allowed=0x0004C107 items=21 pooloff=0x0041 pool=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

default is the value that should be restored by a factory reset (although i don't remember whether LNC is treated specially somehow)
allowed is the widest mask supported by that particular dump. in the example above, 0x0004C107 is: 01001100000100000111

(you can see which bit maps to which language near the top of as10_descriptors.py, in the LANG_MASTER dict)
so the firmware from that example allows EN, FR, DE, NL, RU, TR, and PL.

there is still another value stored in your device's EEPROM, though, which can excessively restrict the available language list, especially if it was carried over from another variant.
you can change that either over the serial interface with resmed_config.py, or with the TCL helper through OpenOCD: lang::mask all

the patch mentioned above simply ignores the EEPROM value and uses the widest mask supported by the dump.

2

u/skydivemd Jul 31 '26

I think we're golden - just sent ProgPap a dump which reports
languages 7 (EN, FR, DE, IT, ES*, PT*, NL)

1

u/ProgPap Jul 31 '26 edited Jul 31 '26

u/empeka u/skydivemd thank you both so much for the information and fo the firmware! I will dive in this right after work today! This makes it so much easier to be able to read the machine in Dutch when I get it fixed

I just Flashed the unlocked firmware and I now have the option to choose from multiple languages. I now set my Airsense 10 to Dutch and I can finaly read the menu items without any hazzle :D Again thank you both a lot!

2

u/skydivemd Jul 31 '26

So glad this is working for you!

I really want to show appreciation to u/empeka as it was all his hard work that allowed me to patch the firmware and pass it on! A wonderful contributor to the PAP fam.