Auteur Sujet: Qualité VoWiFi  (Lu 11832 fois)

0 Membres et 1 Invité sur ce sujet

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 345
Qualité VoWiFi
« Réponse #48 le: 20 octobre 2022 à 16:44:55 »
Merci beaucoup pour ces infos. J'ai bien essayé de chopper des logs, mais je n'ai pas l'impression que ce soit actif. J'ai essayé plusieurs trucs comme racoon, ike, ipsec... rien ne ressort. Je n'ai en gros que l'état de l'IMS qui se déco/reco

Je vais faire une capture pour bouygues  ;)

J'ai trouvé d'autres éléments qui semble corroborer ce que tu dis (c'est d’ailleurs la même personne que j'ai cité juste avant mais avec un autre téléphone) : https://community.ee.co.uk/t5/Android-Devices/Xiaomi-11T-Pro-Wi-Fi-calling-disconnects-every-50-minutes/td-p/1099572/page/2

I can monitor this on my router in real time and see the connection on port 4500 to EE drop at the point it starts exchanging ISAKMP packets for CREATE_CHILD_SA.
: C'est exactement ce qui se passe.

Et le plus intéressant  :
So I've been doing some debugging and investigation into this 50 minute drop, this possibly affects a lot of devices using standard Qualcomm supplied modem configuration binaries as I've seen the same settings in many modem.bin files for different manufacturers on Qualcomm phones.

The issue is the settings in the /modem_pr/mcfg/configs/mcfg_sw/generic/EU/EE/Commercial mcfg_sw.mbn file, this has various configuration settings but the ones in question are in the XML for <IWLAN_S2B_CONFIG>. There are two elements in this XML file called <esp_rekey_time> and <ikev2_sa_rekey_timer>, the esp_rekey_timer is set to 3000 seconds for soft and 3600 for hard. Now 3000 seconds is 50 minutes!

At the 50 minute mark the initial keys are exchanged for new ones, this is failing, I think because no group or hash algorithms are in this configuration file (they are in other carrier configuration settings).

A work around I have tested is to simply set these timeout values both to soft:64800/hard:64900 (as seen in other operator config files, e.g. Vodafone), this means the initial keys will last around 45 days, in other words under normal usage the Wi-Fi calling VPN will never get to that age as the connection is dropped and reset on moving around and leaving the Wi-Fi network, but now it will no longer drop every 50 minutes as it never attempts to 'rekey' and so fail. However to implement these changes requires a rooted device and a Qualcomm PST debug port enabled, along with the Qualcomm PST software.


Mon téléphone (qui est aussi un xiaomi) utilise bien un Qualcomm... ça sent le fichier de config foireux.

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Qualité VoWiFi
« Réponse #49 le: 20 octobre 2022 à 16:51:33 »
Tu peux joindre le fichier xml en question ici ? Tu as la possibilité de le modifier, éventuellement ?

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 345
Qualité VoWiFi
« Réponse #50 le: 20 octobre 2022 à 17:18:03 »
J'aimerais bien, mais même avec un accès root, je ne trouve aucun fichier qui corresponde... En fait je me demande si on peut y accéder directement, les ROMS android sont tellement différentes entre elles que ce qui est valable pour une ne l'est pas pour une autre.

Le seul truc que j'ai trouvé c'est un semblant de conf pour chaque opérateur (carrierconfig), mais la plupart des .xml sont identiques et ne concernent pas les paramètres vowifi.
« Modifié: 20 octobre 2022 à 18:08:23 par renaud07 »

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Qualité VoWiFi
« Réponse #51 le: 20 octobre 2022 à 18:00:14 »
A priori si tu peux activer le developper mode tu n'as pas besoin de root pour collecter les logs : https://support.citrix.com/article/CTX232375/how-to-install-and-collect-adb-logs-on-android-device

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 345
Qualité VoWiFi
« Réponse #52 le: 20 octobre 2022 à 18:09:46 »
C'est exactement ce que j'ai fait, mais rien de pertinent.

Et sinon c'est bon j'ai récupéré les .mbn. En fait ça n’apparaît pas dans l'explorateur (comme il me semblait), il faut passer en ligne de commande et là c'est bon. Maintenant faut pouvoir les extraire et les modifier.

Je vais tenter QPST comme mentionné, j'espère que je vais pas faire de gaffe...

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 345
Qualité VoWiFi
« Réponse #53 le: 03 novembre 2022 à 23:35:21 »
Suite des investigations.

J'ai extrait les .mbn et j'ai eu quelques surprises : Le xml d'orange ne contient aucun paramètre relatif au rekeying. J'ai comparé avec la ROM constructeur la plus récente : ça contient la même chose. Seuls quelques fichiers diffèrent mais je ne sais pas si ça a une influence dessus. Chez Bouygues au contraire j'ai bien 2 paramètres soft_sec et hard_sec pour ike et esp.

Orange :
<?xml version="1.0" ?>
<IWLAN_S2B_CONFIG>
    <GENERIC_VARIANT>
        <epdg_addr_info>
            <static_fqdn_enabled>FALSE</static_fqdn_enabled>
            <plmn_list/>
            <dns_retries>
              <dns_retry_series_type>EXPONENTIAL</dns_retry_series_type>
              <dns_retry_series_exp_factor>2</dns_retry_series_exp_factor>
              <dns_max_retries>5</dns_max_retries>
              <timeout_error_dns_retry_timer_series>
              <seconds random="TRUE">60</seconds>
              <seconds>120</seconds>
              <seconds>480</seconds>
              <seconds>900</seconds>
              </timeout_error_dns_retry_timer_series>
              <name_error_dns_retry_timer_series>
                  <seconds>1</seconds>
                  <seconds>2</seconds>
                  <seconds>4</seconds>
                  <seconds>8</seconds>
                  <seconds>16</seconds>
                  <seconds>32</seconds>
                  <seconds>64</seconds>
                  <seconds>128</seconds>
                  <seconds>256</seconds>
              </name_error_dns_retry_timer_series>
              <block_iwlan_for_dns_timeout_error>FALSE</block_iwlan_for_dns_timeout_error>
              <block_iwlan_for_default_dns_error>FALSE</block_iwlan_for_default_dns_error>
              <block_iwlan_for_dns_name_error>TRUE</block_iwlan_for_dns_name_error>
            </dns_retries>           
        </epdg_addr_info>
        <ikev2_info>
            <self_id>
                <id_type>ID_RFC822_ADDR</id_type>
                <mac_enabled>FALSE</mac_enabled>
                <identifier/>
            </self_id>
            <ke_payload_enabled>FALSE</ke_payload_enabled>
            <ikev2_dh_group_list>
                <dh_group value="14"/>
                <dh_group value="5"/>
            </ikev2_dh_group_list>
            <ikev2_encr_algo_list>
                <encr_algo value="12"/>
            </ikev2_encr_algo_list>
            <ikev2_hash_algo_list>
                <algo value="12"/>
            </ikev2_hash_algo_list>
            <ikev2_prf_algo_list>
                <prf_algo value="5"/>
            </ikev2_prf_algo_list>
            <esp_encr_algo_list>
                <encr_algo value="12"/>
            </esp_encr_algo_list>
            <esp_auth_algo_list>
                <algo value="12"/>
            </esp_auth_algo_list>
            <dpd_info>
                <liveness_check_enabled>TRUE</liveness_check_enabled>
            </dpd_info>
        </ikev2_info>
        <err_code_info>
            <level_throttling_disabled>FALSE</level_throttling_disabled>
            <pdn_throttling>
              <throttling_series type="default">
              <throttling_values>
                <seconds>4</seconds>
                <seconds>8</seconds>
                <seconds>16</seconds>
                <seconds>32</seconds>
                <seconds>64</seconds>
                <seconds>128</seconds>
                <seconds>256</seconds>
                <seconds>512</seconds>
                <seconds>1024</seconds>               
              </throttling_values>
              </throttling_series>
            </pdn_throttling>
        </err_code_info>         
    </GENERIC_VARIANT>
    <WP_VARIANT>
        <ikev2_info>
            <esp_auth_algo_list>
                <algo value="1"/>
                <algo value="2"/>
            </esp_auth_algo_list>
            <configured_ike_port>4500</configured_ike_port>
        </ikev2_info>
    </WP_VARIANT>
</IWLAN_S2B_CONFIG>

Bouygues :
<?xml version="1.0" ?>
<IWLAN_S2B_CONFIG>
    <GENERIC_VARIANT>
        <epdg_addr_info>
            <static_fqdn_enabled>FALSE</static_fqdn_enabled>
            <plmn_list/>
        </epdg_addr_info>
        <ikev2_info>
            <self_id>
                <id_type>ID_RFC822_ADDR</id_type>
                <mac_enabled>FALSE</mac_enabled>
            </self_id>
            <ke_payload_enabled>FALSE</ke_payload_enabled>
            <peer_id>
                <id_type>ID_FQDN</id_type>
            </peer_id>
            <ikev2_dh_group_list>
                <dh_group value="14"/>
            </ikev2_dh_group_list>
            <ikev2_encr_algo_list>
                <encr_algo value="12">
                    <key_size>256</key_size>
                </encr_algo>
            </ikev2_encr_algo_list>
<ikev2_hash_algo_list>
                <algo value="12"/>
            </ikev2_hash_algo_list>
            <ikev2_prf_algo_list>
                <prf_algo value="5"/>
            </ikev2_prf_algo_list>
            <esp_encr_algo_list>
                <encr_algo value="12">
                    <key_size>256</key_size>
                </encr_algo>
            </esp_encr_algo_list>
            <esp_auth_algo_list>
                <algo value="12"/>
            </esp_auth_algo_list>
            <ikev2_sa_rekey_timer>
                <soft_sec>14700</soft_sec>
                <hard_sec>14800</hard_sec>
            </ikev2_sa_rekey_timer>
            <esp_rekey_timer>
                <soft_sec>7300</soft_sec>
                <hard_sec>7400</hard_sec>
            </esp_rekey_timer>
        </ikev2_info>
    </GENERIC_VARIANT>
    <WP_VARIANT>
        <ikev2_info>
            <esp_auth_algo_list>
                <algo value="1"/>
                <algo value="2"/>
            </esp_auth_algo_list>
            <configured_ike_port>4500</configured_ike_port>
        </ikev2_info>
    </WP_VARIANT>
</IWLAN_S2B_CONFIG>

Il serait intéressant de comparer avec d'autres smartphones qui fonctionnent.

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Qualité VoWiFi
« Réponse #54 le: 04 novembre 2022 à 09:56:25 »
Peux-tu modifier ces fichiers .mbn ?

Un échec de renégo CHILD_SA en IKEv2, ca sent le mismatch de DH group ou PRF. J'essayerai bien d'éditer cette partie:
            <ikev2_dh_group_list>
                <dh_group value="14"/>
                <dh_group value="5"/>
            </ikev2_dh_group_list>
En enlevant d'abord le <dh_group value="5"/>, puis <dh_group value="14"/> si ca n'aide pas.

Pour vérifier les paramètres spécifiés, pourrais tu poster le résultat d'un ip xfrm state ? (tu peu masquer les clefs si tu veux, elles n'ont pas d'intérêt. C'est pour voir quelles combinaisons d'algorithmes de chiffrement et d'intégrité sont utilisés)

Tu peux aussi essayer d'ajouter des sections rekey timers comme dans le fichier de Bouygues:
            <ikev2_sa_rekey_timer>
                <soft_sec>14700</soft_sec>
                <hard_sec>14800</hard_sec>
            </ikev2_sa_rekey_timer>
            <esp_rekey_timer>
                <soft_sec>7300</soft_sec>
                <hard_sec>7400</hard_sec>
            </esp_rekey_timer>
en dernier recours pour essayer de retarder le rekeying, qui devrait finir par être initié par la gateway IPSec Orange plutôt que par ton téléphone, si ca marche.
Il est aussi possible que la gateway ne rekey pas, et dans ce cas les CHILD_SA vont simplement expirer...

On tire un peu dans l'obscurité car on a pas les logs.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 345
Qualité VoWiFi
« Réponse #55 le: 04 novembre 2022 à 17:46:45 »
Merci pour ta réponse. A priori oui, je peux modifier les mbn.

Le gros problème, c'est qu'il est impossible d'écrire sur la partition, elle est bloquée en read only. J'ai tenté plusieurs trucs comme un remount, rien ne marche... Je ne suis pas le seul dans ce cas. A priori il y a eu des modifications depuis android 10 empêchant le remount en R/W. En guise de workaround il faut passer par magisk via ses "modules" qui permettent de remplacer un fichier par je ne sais quel mécanisme.

Je suis en train de tester voir si ça fonctionne.

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 345
Qualité VoWiFi
« Réponse #56 le: 04 novembre 2022 à 22:08:05 »
Bon, je n'arrive à rien  :-\

Je soupçonne que les fichiers sont chargés avant la modification par magisk ou alors il manque un truc (j'ai vu des tutos concernant la 5G sur des google pixel, et il fallait tout un script d’installation, pas juste un bête remplacement de fichier copié au bon endroit, pourtant ça à l'air d'être pris en compte puisque ça apparaît dans l'application).

C'est effrayant de voir que tout ceci est encore en beta depuis des années et qu'on doive nous même bidouiller des fichiers "bas niveau" pour que ça marche. Je prédis un beau bordel le jour où la 3G coupe pour de bon. Heureusement que ça ne touche que la Vowifi et que je peux facilement m'en passer.

Elle est bien bancale cette soit disante compatiblité officielle...

EDIT : Contre toute attente, j'ai réussi à avancer : après moult manip, j'ai enfin réussi à faire reconnaitre le téléphone par QPST et j'ai pu accéder au xml directement et l'éditer. SAUF que ça n'a pas l'air d'être pris en compte.

Le fichier est bien modifié dans le logiciel (même après déco/reco ou reboot du tel), mais si je vais voir le mbn et que j'extrais le contenu : on retrouve le fichier d’origine (de même on voit que la date de modif n'a pas changé). Je ne sais pas si y'a un mécanisme qui conserve le mbn d'origine mais prend bien en compte la modif, toujours est-il que ça ne fonctionne pas mieux en supprimant <dh_group value="5"/>.

EDIT2 : le type de clés :
# ip xfrm state
src 80.12.36.221 dst 192.168.1.76
proto esp spi 0x39d1e4ba reqid 0 mode tunnel
replay-window 0 flag af-unspec
auth-trunc hmac(sha256) 0x99c75ecdac418ecf0c1e093xxxxxxxxxdc20b50eebb4c174a48c99bf5698410bf8d3 128
enc cbc(aes) 0x440cde566dfff01b697f7cc40xxxxxxx9d6d7df0ac335650a36f17a799ef9921
encap type espinudp sport 4500 dport 44073 addr 0.0.0.0
anti-replay context: seq 0x0, oseq 0x0, bitmap 0x00000000
src 192.168.1.76 dst 80.12.36.221
proto esp spi 0x800b932e reqid 0 mode tunnel
replay-window 0 flag nopmtudisc af-unspec
auth-trunc hmac(sha256) 0xe6713023b41ac8195cce54xxxxx9281e5738de2a0317c18bd19c973cd46c96f15 128
enc cbc(aes) 0x85d37c3aac9844fff624a73c4fb5xxxx6d9398f096c6e861e93d20af01de37cd
encap type espinudp sport 44073 dport 4500 addr 0.0.0.0
anti-replay context: seq 0x0, oseq 0x1683, bitmap 0x00000000
« Modifié: 05 novembre 2022 à 01:33:58 par renaud07 »

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Qualité VoWiFi
« Réponse #57 le: 05 novembre 2022 à 09:37:11 »
Le fichier est bien modifié dans le logiciel (même après déco/reco ou reboot du tel), mais si je vais voir le mbn et que j'extrais le contenu : on retrouve le fichier d’origine (de même on voit que la date de modif n'a pas changé). Je ne sais pas si y'a un mécanisme qui conserve le mbn d'origine mais prend bien en compte la modif, toujours est-il que ça ne fonctionne pas mieux en supprimant <dh_group value="5"/>.
Et si tu enlèves <dh_group value="14"/> ?
À mon avis le fichier n'est en effet pas modifié, et la modif n'est pas prise en compte.

# ip xfrm state
src 80.12.36.221 dst 192.168.1.76
proto esp spi 0x39d1e4ba reqid 0 mode tunnel
replay-window 0 flag af-unspec
auth-trunc hmac(sha256) 0x99c75ecdac418ecf0c1e093xxxxxxxxxdc20b50eebb4c174a48c99bf5698410bf8d3 128
enc cbc(aes) 0x440cde566dfff01b697f7cc40xxxxxxx9d6d7df0ac335650a36f17a799ef9921
encap type espinudp sport 4500 dport 44073 addr 0.0.0.0
anti-replay context: seq 0x0, oseq 0x0, bitmap 0x00000000
src 192.168.1.76 dst 80.12.36.221
proto esp spi 0x800b932e reqid 0 mode tunnel
replay-window 0 flag nopmtudisc af-unspec
auth-trunc hmac(sha256) 0xe6713023b41ac8195cce54xxxxx9281e5738de2a0317c18bd19c973cd46c96f15 128
enc cbc(aes) 0x85d37c3aac9844fff624a73c4fb5xxxx6d9398f096c6e861e93d20af01de37cd
encap type espinudp sport 44073 dport 4500 addr 0.0.0.0
anti-replay context: seq 0x0, oseq 0x1683, bitmap 0x00000000
Okay, les valeurs encr et hash algo sont bien correctes dans le fichier de config.

Elle est bien bancale cette soit disante compatiblité officielle...
Ces fichiers de conf sont-ils fournis par Orange ? Ou distribués par les serveurs de google et poussés à google par Orange, comme sous iOS ?
Est-ce que tu aurais moyen de les récupérer sur un téléphone Android sur lequel la renégo se passe bien, pour comparer ?

renaud07

  • Abonné Orange adsl
  • *
  • Messages: 3 345
Qualité VoWiFi
« Réponse #58 le: 05 novembre 2022 à 15:55:57 »
Et si tu enlèves <dh_group value="14"/> ?
À mon avis le fichier n'est en effet pas modifié, et la modif n'est pas prise en compte.

Faut que j'essaie, mais je n'y crois pas non plus. Le pire c'est que même si le logiciel constructeur ne modifie pas réellement les fichiers, je ne vois pas quoi faire de plus à part reflasher... mais pour ça il faut pouvoir modifier et reconstruire sans erreur.

Ces fichiers de conf sont-ils fournis par Orange ? Ou distribués par les serveurs de google et poussés à google par Orange, comme sous iOS ?
Est-ce que tu aurais moyen de les récupérer sur un téléphone Android sur lequel la renégo se passe bien, pour comparer ?

Sur android d'après ce que j'ai compris les fichiers sont fournis au fabricant du SoC/tel par chaque opérateur et c'est ensuite en dur dans la ROM. Pas de MAJ poussée en OTA, il faut mettre toute la ROM à jour (ou au moins la partition EFS/modem) pour les changer.

EDIT : Je vois que l'outil PDC, utilisé pour activer les profils permet d'en charger d'autres (le .mbn entier donc), mais j'ai un peu peur de tenter la manip et j'ai pas très envie si jamais ça foire pour de bon de devoir tout reflasher. Bref, je crois que je vais laisser tomber c'est plus prudent.
« Modifié: 05 novembre 2022 à 17:15:25 par renaud07 »

simon

  • Abonné Orange Fibre
  • *
  • Messages: 935
Qualité VoWiFi
« Réponse #59 le: 05 novembre 2022 à 18:34:33 »
Si tu peux ajouter des profils, fais un backup et si ca se passe mal, ré-ajoute le profil actuel ? Je n'ai pas l'impression que tu risques grand chose, surtout si tu pars d'un état où la VoWifi est plus ou moins inutilisable.