Appels, jeux et streaming

Rapports d’appel et de session à distance, mode appel, vérification avant les réunions, ping des serveurs de jeu et overlay.

Rapports d’appel

Après chaque appel, Kilobat vous dit s’il s’est bloqué et pourquoi. Il repère un appel quand Zoom, Microsoft Teams, FaceTime, Slack, Webex, Discord, WhatsApp, Telegram, Signal ou un navigateur utilise le micro plus de dix secondes. Il n’entend jamais l’appel : il voit seulement quelle app utilise le micro, ce que macOS affiche de toute façon. Jusqu’à la fin de l’appel, il envoie un ping à Internet et à votre routeur chaque seconde, note l’autre app la plus active et vérifie le processeur, la mémoire, la température et le GPU du Mac toutes les cinq secondes.

Deux secondes ou plus d’affilée de pings perdus, ou de pings 200 ms plus lents que d’habitude pendant l’appel, comptent comme un blocage. Chaque blocage reçoit une cause : une autre app en train d’envoyer ou de télécharger, un autre appareil de votre réseau (d’après les compteurs de trafic de votre routeur, s’il les partage via UPnP), le Wi-Fi (quand le routeur a aussi calé), le balayage AirDrop, ou au-delà de votre routeur. À part, la carte indique quand le Mac lui-même a peiné : processeur saturé (et par quelle app), mémoire épuisée, Mac qui se bride parce qu’il chauffe, ou GPU saturé. La carte apparaît dans État › Appels et sous forme de notification. Sans Pro, elle indique combien de fois l’appel s’est bloqué ; Kilobat Pro nomme les causes et dit quoi essayer. Désactivez-la dans Réglages › Réseau › Rapport après chaque appel. Dans le Terminal, kilobat calls liste les cartes, et les agents les obtiennent via get_call_reports.

Quand un appel s’est bloqué au-delà de votre routeur, là où se trouvent les serveurs du service d’appel, Kilobat consulte la page d’état de ce service à la fin de l’appel, et la fiche indique ce qu’elle signalait à ce moment-là : « Selon la page d’état de Zoom, il y avait une panne à ce moment-là », avec l’incident et un lien, ou qu’elle ne signalait aucun problème. Cette partie est gratuite.

Rapports SSH et bureau à distance

Après une session SSH, Mosh ou de bureau à distance, Kilobat indique si la saisie a pris du retard ou si l’écran s’est bloqué, et pourquoi. Il compte un ssh ou un mosh-client qui a son propre terminal (un tty, ou une app de terminal comme Terminal, iTerm2, Ghostty, WezTerm, kitty, Warp ou VS Code parmi ses processus parents), ainsi que Partage d’écran, Parsec, Jump Desktop, Windows App (Microsoft Remote Desktop), AnyDesk, TeamViewer et RustDesk tant qu’ils affichent un écran distant. Une session doit recevoir une minute de saisie dans le terminal ou la visionneuse au premier plan avant d’avoir un rapport ; ainsi, scp, sftp, rsync, git via ssh, les tunnels (-N, -f), les rebonds ProxyJump, les commandes isolées et le ssh en arrière-plan des éditeurs ou des agents ne comptent jamais. Les sessions vers ce Mac lui-même (une VM ou un conteneur sur localhost) sont ignorées. Chrome Remote Desktop s’exécute dans un onglet du navigateur et ne peut pas être distingué du navigateur. Kilobat ne lit jamais la session : il voit le processus, l’adresse à laquelle il est connecté et le nombre d’octets qu’il échange.

Tant qu’une session est ouverte, Kilobat envoie chaque seconde un ping à l’hôte (à l’adresse propre de l’hôte, telle que la connexion la nomme), à Internet et à votre routeur, lit dans macOS le temps d’aller-retour TCP de la connexion toutes les quelques secondes, et note l’autre app la plus active, le Wi-Fi et la charge du Mac, comme pour les rapports d’appel. Deux secondes ou plus de pings perdus, ou des pings 150 ms plus lents que d’habitude pour la session, comptent comme un retard ; en SSH et Mosh, seulement pendant que vous tapiez. Chaque retard reçoit une cause, dans l’ordre des rapports d’appel : la page de connexion du Wi-Fi qui a mis fin à votre session, puis une autre app en train d’envoyer ou de télécharger, un autre appareil de votre réseau (nommé quand c’est un Mac jumelé qui exécute Kilobat), la gigue ou un signal faible sur le Wi-Fi, le balayage AirDrop, Starlink, votre opérateur ou au-delà (Internet a aussi calé), ou le chemin vers l’hôte lui-même (Internet a répondu à temps, mais pas l’hôte). Quand le retard se situait au-delà de votre routeur et que l’hôte appartient à un service dont Kilobat lit la page d’état, comme Tailscale, le rapport indique quand ce service a reconnu une panne. Un hôte à 150 ms ou plus est signalé comme lointain même quand la ligne était propre. Quand des frappes sont restées sans réponse deux secondes ou plus alors que l’hôte et votre routeur répondaient aux pings à temps, c’est le serveur lui-même qui était lent ; Kilobat ne le dit qu’après que c’est arrivé deux fois, et seulement pour SSH. Un hôte qui ignore le ping est mesuré jusqu’à Internet, avec le temps d’aller-retour TCP de la connexion pour sa distance et pour cette vérification.

En SSH, quand les retards venaient de la gigue du Wi-Fi, d’AirDrop, de Starlink ou du chemin, ou que l’hôte est lointain, instable ou perd des paquets, le rapport suggère Mosh, qui affiche la saisie aussitôt et résiste aux paquets perdus et aux changements de Wi-Fi. Il ne le fait pas quand la cause était une app, un autre appareil, le Mac ou le serveur, car Mosh ne ferait que la masquer. Une session se termine quand son processus quitte, ou après dix minutes sans frappe (trois pour un bureau à distance), et le rapport s’arrête à la dernière saisie. Les rapports s’affichent dans État › Sessions à distance, qui apparaît dès que Kilobat a vu une session ; une notification n’arrive qu’après une session qui a pris du retard ou s’est bloquée. Sans Pro, le rapport indique combien de fois ; Kilobat Pro nomme les causes, dit quoi essayer et quand Mosh aiderait. Désactivez les rapports ou leurs notifications dans Réglages › Réseau › Rapport après les sessions à distance. Dans le terminal, kilobat remote les liste (--kind ssh|mosh|desktop), et les agents les lisent via get_remote_session_reports.

Rapports de diffusion OBS

Après chaque diffusion OBS, Kilobat indique si des images ont été perdues, quand et pourquoi. Il lit OBS Studio 28 ou version ultérieure via son serveur WebSocket intégré (obs-websocket 5). Dans OBS, ouvrez Tools › WebSocket Server Settings et cochez Enable WebSocket server ; activez ensuite Réglages › Streaming › Rapports de diffusion OBS dans Kilobat, en indiquant le port (4455 sauf modification) et le mot de passe si OBS en demande un. Le mot de passe est conservé dans le trousseau du Mac. Tester la connexion indique clairement si elle a réussi, si OBS n’est pas lancé ou si son serveur WebSocket est désactivé, si un mot de passe est requis ou incorrect. Kilobat se connecte uniquement à 127.0.0.1 et demande des compteurs : il ne voit jamais la vidéo, l’audio, le chat ou votre clé de diffusion. Streamlabs Desktop et les autres apps de diffusion ne sont pas lus : Streamlabs dispose de sa propre commande à distance (port 59650, avec un jeton), dont l’unique chiffre d’images perdues ne distingue pas le réseau de l’encodeur.

Pendant une diffusion OBS, Kilobat demande chaque seconde l’état du flux (images perdues par le réseau, appelées Dropped Frames (Network) dans OBS, indicateur de congestion et octets envoyés) et ses statistiques (images manquées par retard de rendu, images sautées par retard d’encodage et utilisation du processeur par OBS). Il mesure aussi la ligne comme le font les rapports d’appel : un ping par seconde vers Internet et le routeur, l’autre app la plus active, la charge du Mac, les compteurs de trafic des autres appareils si le routeur les partage via UPnP, les rapports des Mac jumelés, le signal Wi-Fi, AirDrop, une antenne Starlink et la page d’identification Wi-Fi.

Chaque période de perte d’images reçoit une cause, et celles du réseau sont séparées de celles d’OBS. Côté réseau : une autre app du Mac qui envoie des données (comme Dropbox), un autre appareil du réseau, un blocage du Wi-Fi ou du routeur (signal faible ou AirDrop précisé si c’est la cause), Starlink, une déconnexion par la page d’identification Wi-Fi, un débit binaire supérieur au débit d’envoi disponible ou un problème au-delà du routeur, chez votre fournisseur ou sur le chemin vers le serveur de réception. Les images sautées à cause du retard d’encodage indiquent que l’encodeur ne suit pas ; celles manquées à cause du retard de rendu indiquent un GPU généralement occupé par le jeu. Le rapport précise alors que la connexion n’est pas en cause. Les conseils suivent la cause : réduire le débit binaire à une valeur supportée, mettre l’app en pause, utiliser le mode appel pour les diffusions, Ethernet plutôt que le Wi-Fi, un serveur de réception plus proche, un préréglage d’encodeur plus rapide ou l’encodeur matériel (Apple VT H264), ou réduire la résolution ou la fréquence d’images.

Les rapports apparaissent dans État › Diffusions, à côté d’Appels et de Sessions à distance, une fois que Kilobat a détecté une diffusion. Une notification n’arrive que lorsque la perte d’images est notable : au moins 0,5% des images de la diffusion ou une période avec au moins 5% de pertes. Sans Pro, le rapport indique le nombre d’images perdues ; Kilobat Pro précise chaque cause et quoi modifier. Le mode appel pour les diffusions (Pro) met en attente les apps concernées par le mode appel, Dropbox, Google Drive, OneDrive, Backblaze et les autres, ainsi que les téléchargements Steam lorsqu’aucun jeu n’est au premier plan, du début à la fin de la diffusion OBS.

La vérification avant diffusion indique si votre débit d’envoi peut prendre en charge votre diffusion de ce soir. Depuis État › Diffusions, le raccourci Vérifier avant de diffuser ou kilobat stream check, elle lance pendant environ huit secondes un test d’envoi sur une connexion vers Cloudflare (16 MB au maximum) et 20 pings vers 1.1.1.1 pour mesurer la gigue et les pertes. Elle lit le débit binaire configuré dans OBS (dans le profil en mode de sortie simple, ou dans les réglages d’encodeur du profil en mode avancé), celui de votre dernière diffusion ou celui que vous indiquez, puis compare : le débit d’envoi doit couvrir le débit binaire plus 30%. Elle indique prêt, juste si le débit couvre la diffusion mais pas la marge, ou insuffisant, avec un débit binaire adapté (débit d’envoi divisé par 1,3 et arrondi à 100 kbps à l’unité inférieure). Elle nomme aussi les apps qui envoient actuellement des données. Sur un réseau limité, elle ne mesure jamais sans demander et utilise à la place le dernier test de débit sur ce réseau, en le précisant. La vérification est gratuite.

Dans le terminal, kilobat stream (ou stream status) indique si OBS est connecté et diffuse, avec le nombre d’images perdues jusqu’ici ; kilobat stream check lance la vérification avant diffusion (--bitrate <kbps> pour le définir, --no-measure pour utiliser le dernier test de débit, --measure pour tester malgré un réseau limité) ; kilobat stream reports liste les diffusions passées. Chacune accepte --json. Les agents utilisent get_stream_reports et check_stream_readiness, tous deux en lecture seule. Voir Kilobat pour les créateurs en direct.

Jeu en cloud

Pendant une partie en cloud, Kilobat mesure la session comme les rapports d’appel mesurent un appel, puis indique quand et pourquoi elle a saccadé. Il reconnaît GeForce NOW, Boosteroid et Shadow dans leurs apps Mac par le nom de l’app, et GeForce NOW, Xbox Cloud Gaming, Amazon Luna, Boosteroid et Shadow dans un navigateur. Une session commence lorsque le trafic propre de l’app ou du navigateur transporte un flux de jeu : pendant dix secondes, principalement au moins 2 Mbps d’UDP entrant, 3 Mbps en moyenne et quatre fois le trafic sortant. Les vidéos web ordinaires sur le port 443 et la plupart des appels bidirectionnels ne répondent pas à ce critère. Un autre onglet actif du même navigateur peut influencer l’estimation. Dans un navigateur, le flux doit aussi être identifié : Kilobat cherche les hôtes propres au service parmi ceux que contacte le navigateur, à partir des noms de son filtre réseau ou du DNS inversé (play.geforcenow.com, les hôtes gssv-play sous xboxlive.com, luna.amazon., cloud.boosteroid.com, pc.shadow.tech). Un flux non identifié est ignoré ; sans filtre réseau, certaines sessions de navigateur ne sont donc pas signalées. Kilobat ne voit jamais le jeu, la vidéo ni votre compte.

Pendant une session, État › Jeu en cloud affiche le ping, la gigue et les pertes des 30 dernières secondes (vers le serveur du flux s’il répond aux pings, sinon vers 1.1.1.1), une estimation du débit binaire et des données à partir du trafic admissible du client, et ce qui gêne actuellement sur ce Mac : recherche AirDrop, Wi-Fi en 2.4 GHz, signal faible et apps qui envoient ou téléchargent beaucoup, en nommant iCloud Photos, iCloud Drive, Time Machine et les mises à jour macOS. Mettre en pause AirDrop et les transferts en arrière-plan met en pause la liaison AirDrop (gratuit ; macOS demande un mot de passe administrateur) et, avec Pro, les apps mises en attente par le mode appel, comme Dropbox, Google Drive et les téléchargements Steam, jusqu’à la fin de la session, jusqu’à ce que vous passiez à l’une d’elles ou pendant trois heures au maximum. Les services iCloud et de mise à jour d’Apple ne sont pas suspendus ; la fiche explique comment les mettre en pause vous-même. Sur un réseau limité ou un partage de connexion, elle ajoute les données par heure au débit actuel, le total prévu selon votre durée habituelle de session pour ce service (une heure jusqu’à trois sessions observées) et le temps restant avant l’épuisement du forfait.

Une saccade correspond à au moins deux secondes de pings perdus ou dépassant de 100 ms la médiane de la session, ou à au moins trois secondes où le débit binaire du flux descend sous 40% de sa médiane (le service réduit la qualité d’image), en dehors des 30 premières et des dernières secondes. Chaque saccade reçoit toutes les causes présentes : page d’identification Wi-Fi, Wi-Fi lorsque le routeur s’est aussi bloqué (avec distinction entre 2.4 GHz, signal faible, AirDrop et borne maillée éloignée), antenne Starlink, autre app transférant beaucoup de données, autre appareil du réseau ou problème au-delà du routeur. Par exemple : « Saccades à 21:14 pendant 40 s : Wi-Fi 2.4 GHz pendant qu’iCloud Photos envoyait des données ». Sans Pro, le rapport indique le nombre de saccades, le ping, le débit binaire et les données ; Kilobat Pro précise chaque cause et quoi modifier. Une notification suit une session saccadée (Réglages › Streaming › Rapports de jeu en cloud, puis Notifier après une session saccadée). Les 200 derniers rapports sont conservés sur ce Mac.

Dans le terminal, kilobat cloud-gaming (ou cloud-gaming status) affiche la session actuelle et kilobat cloud-gaming reports les sessions passées, chacune avec --json. Les agents utilisent get_cloud_gaming, en lecture seule. Voir le jeu en cloud sur Mac, avec des pages pour GeForce NOW, Xbox Cloud Gaming, Boosteroid, Amazon Luna et Shadow.

Mode appel

Le mode appel arrête les apps qui bloquent les appels pendant que vous êtes en ligne. Quand un appel commence, Kilobat suspend Dropbox, Google Drive, OneDrive, Box, Backblaze, Arq, Creative Cloud, les clients torrent et les apps similaires en cours d’exécution, et refuse leurs nouvelles connexions : un envoi déjà en cours s’arrête aussitôt. Les lanceurs de jeux (Steam, Epic Games, Battle.net) ne sont suspendus que pendant qu’ils téléchargent et qu’aucun jeu n’est au premier plan, pour qu’un jeu et son chat vocal continuent de fonctionner. Tout reprend dès la fin de l’appel, quand vous passez à l’une des apps, quand Kilobat se ferme, ou au bout de trois heures au plus ; une liste écrite avant chaque pause garantit que rien ne reste suspendu, même après un plantage. Les services iCloud et de mise à jour d’Apple ne sont pas suspendus. Choisissez les apps dans Réglages › Réseau › Mode appel › Choisir…, où vous pouvez aussi mettre AirDrop en pause pendant les appels (macOS demande votre mot de passe au début de chaque appel). La carte de l’appel indique ensuite quelles apps le mode appel a suspendues. Le mode appel fait partie de Kilobat Pro.

La vérification avant les réunions

Activez Réglages › Réseau › Vérifier avant les réunions et autorisez une fois l’accès aux calendriers. Environ cinq minutes avant un évènement avec un lien Zoom, Google Meet, Microsoft Teams, FaceTime, Webex, Whereby ou similaire, Kilobat passe dix secondes à vérifier le trafic des autres apps, le Wi-Fi, 100 pings rapides vers Internet, AirDrop et la charge du Mac. Il ne vous prévient que si quelque chose risque de bloquer l’appel, par exemple « Dropbox envoie des données et le Wi-Fi est faible » ; avec Kilobat Pro, la notification comporte un bouton qui suspend ces apps jusqu’à la fin de l’appel. Le calendrier est lu sur ce Mac et rien sur la réunion n’est conservé ni envoyé où que ce soit.

Ping vers les serveurs de jeu

Dans quelle région lancer votre recherche de partie ? Dans Débit › Serveurs de jeu, ouvrez le sélecteur de jeux, cherchez votre jeu et cliquez sur « Pinger les serveurs ». Kilobat envoie cinq pings à chaque centre de données de ce jeu, quelques-uns à la fois, et les classe par ping médian avec la gigue et la perte, le plus proche en premier sous Le meilleur pour vous. Une région plus stable à 2 ms près l’emporte sur une plus irrégulière. Cela prend environ cinq secondes et ne se lance que si vous le demandez. Le sélecteur affiche d’abord les jeux que vous avez utilisés en dernier, puis tous les jeux selon leur nombre de joueurs.

Ce qui est pingué dépend de l’endroit où chaque jeu publie ou héberge ses serveurs, et le chiffre est toujours votre ping vers le centre de données de la région, pas vers le serveur de partie sur lequel vous atterrissez, qui peut ajouter un peu :

  • Relais Valve, pour Counter-Strike 2, Dota 2, Deadlock et Team Fortress 2 : le relais de Valve dans chaque centre de données, d’après la liste de relais que Steam publie pour chaque jeu. Leur trafic de matchmaking passe par ces relais, et le net_print_sdr_ping_times de CS2 mesure les mêmes.
  • Serveurs de ping d’Epic, pour Fortnite : le serveur de ping qu’Epic indique pour chaque sous-région de matchmaking. Là où un réseau bloque le ping, Kilobat mesure à la place le temps d’une connexion TCP vers ce serveur.
  • Régions AWS, pour Apex Legends, Dead by Daylight et Marathon : ces jeux hébergent leurs parties sur Amazon GameLift, et Kilobat envoie un écho UDP à la balise de ping de GameLift elle-même dans chaque région AWS utilisée par le jeu (Apex et Marathon listent les leurs dans leur configuration de centres de données Steam). L’étiquette indique la région, par exemple « Frankfurt · AWS eu-central-1 ».
  • Régions Azure, pour Rainbow Six Siege, Age of Empires II, III et IV et Age of Mythology : les centres de données de Siege sont des régions PlayFab sur Azure, et chaque salon d’Age of Empires indique la région Azure de son serveur relais. Kilobat envoie la sonde de latence de PlayFab à sa balise dans chaque région ; là où une région n’a pas de balise (UK West), il mesure le temps d’une connexion TCP vers Azure Storage dans cette région.
  • Hôtes de test officiels, pour Brawlhalla et Hunt: Showdown 1896 : les hôtes de test de ping que l’aide de Brawlhalla indique pour chaque région (mesurés en TCP, car ils ne répondent pas au ping), et les deux adresses de test que Crytek publie pour les régions Europe et Est des États-Unis de Hunt.

Les jeux qui ne publient rien à pinguer figurent dans le sélecteur avec la raison, sans supposition : Valorant et League of Legends (Riot ne publie aucune cible, et les adresses que partagent les joueurs ne répondent plus), Overwatch 2, Call of Duty, PUBG, Marvel Rivals, Roblox, World of Warcraft et d’autres sans serveurs ni régions publiés ; GTA Online, Helldivers 2, Destiny 2 et Warframe, où ce sont les joueurs qui hébergent ; Minecraft, Rust, Palworld et Valheim, où vous rejoignez des serveurs gérés par d’autres ; et EVE Online, dont l’adresse répond depuis un nœud Cloudflare plutôt que depuis Londres. Pour ces jeux, utilisez votre partie en cours.

Votre partie en cours, en haut du panneau, fonctionne avec n’importe quel jeu. Pendant que vous jouez, Kilobat regarde le jeu au premier plan, ou le dernier à l’avoir été (une app de la catégorie Jeux, un jeu de votre bibliothèque Steam, ou un jeu Windows dans CrossOver, Whisky ou Wine), prend le serveur avec lequel il échange le plus de données UDP, sans compter le trafic web, DNS et d’établissement des appels vocaux, indique le pays où DB-IP enregistre l’adresse (ou le centre de données Valve, s’il s’agit d’un des relais de Valve) et lui envoie cinq pings. Beaucoup de serveurs de jeu ne répondent pas au ping ; Kilobat affiche alors « Ce serveur ne répond pas au ping » au lieu d’une perte. Certains jeux envoient depuis une connexion à laquelle macOS n’associe aucune adresse, et Kilobat indique qu’il ne voit pas leur serveur.

Cliquez sur Utiliser dans l’overlay pour afficher l’un ou l’autre ping en stream : l’overlay envoie alors un ping à ce centre de données, ou au serveur de votre partie, chaque seconde et le nomme sur la pastille, par exemple « CS2 · Frankfurt » ou « Match · Germany » ; pour la partie, il recherche à nouveau le serveur toutes les 30 secondes. Dans le Terminal, kilobat games liste les jeux, kilobat games --game aoe4 affiche le tableau et la cible d’overlay d’un jeu, kilobat games --match vérifie votre partie, et kilobat overlay --target aoe4:westeurope ou --target match la diffuse ; les agents utilisent get_game_ping.

Overlay de streaming

Affichez votre ping en direct dans votre diffusion. Activez Réglages › Streaming › Superposition de diffusion, puis ajoutez http://localhost:7171/ comme source navigateur dans OBS, Streamlabs ou toute app de diffusion (640 × 80 suffit). Une petite pastille affiche le ping, la gigue, les pertes et la dernière minute sous forme de courbe. Par défaut, elle envoie des pings à Internet (1.1.1.1) ; choisissez votre routeur, votre partie actuelle ou le centre de données d’un jeu à côté du réglage ou dans Serveurs de jeu. La pastille le nomme ; server=0 dans l’URL masque ce nom. La chauve-souris sourit en bleu quand la ligne est bonne, devient violette lorsqu’elle ralentit et grimace en rose lorsqu’elle est mauvaise. Modifiez-la dans l’URL : ?show=ping,jitter,loss,graph,speed, theme=dark, light ou clear, et size=s, m ou l. Avec Pro, brand=0 masque le nom de marque et face=0 remplace la chauve-souris par un simple point. Tant que la fonction est active, Kilobat envoie un ping par seconde à sa cible ; la page est servie sur 127.0.0.1, donc seul ce Mac peut l’ouvrir. Sans l’app, kilobat overlay sert la même page jusqu’à Ctrl-C, avec --target pour le routeur, match ou une région de jeu. Pour comprendre ensuite pourquoi OBS a perdu des images et vérifier votre débit d’envoi avant de diffuser, consultez Rapports de diffusion OBS.