Ce midi, tentative de reverse engineering de mon 🎧️ #SteelSeries Arctis 7 pour essayer de récupérer le niveau de batterie 😁️
#thread ⬇️
Fini de manger, on reprend... 😊️
On va essayer de reproduire les commandes du SSE3 et de lire la réponse du casque en 🐍️ Python... On va utiliser le module hidapi pour ça, c'est plus simple que de se taper directement libusb... 😅️
Et voilà, en une pause déjeuner on peut arriver à lire le niveau de batterie d'un casque #SteelSeries 😁️
Je ferais peut-être un article un peu plus détaillé sur le sujet dans les prochains jours, on verra si j'arrive à me motiver 😋️
J'ai mis une version améliorée du script sur Github pour ceux que ça intéressent 😘
https://gist.github.com/flozz/df45b59d6d3594c4b843e00c5df16dd0
@FLOZz Question à la con : comment détecter ce qui est une commande de ce qui ne l’est pas ?
Je cherche à faire de même avec mon Arctis 5 pour la gestion du sidetone & cie, mais le truc m’envoie des rafales de données (paquet de 5 sur une « commande » côté soft). Et les données sont imbittables, au début je pensais comme toi à du flag/level pour le niveau sonore, mais le truc en hexa varie étrangement sur les 4 niveaux possibles…
@aeris Globalement tout ce qui est envoyé au endpoint de contrôle est une commande. APrès faut encore déterminer où s'arrête le numéro de la commande et où commencent les paramètres.
Pour info, quand j'ai démarré mon casque, j'ai eu une avalanche de paquets que j'ai pas compris, mais à un moment le SSE3 à fini par renvoyer en boucle les mêmes 2 commandes sur lesquelles je me suis concentré.
@FLOZz Là j’arrive à regénérer les « commandes » à chaque fois que je change un settings sur le logiciel. Mais je n’arrive pas à faire correspondre un truc avec l’action faite…
@aeris Je t'avoue que j'ai pas plus creusé que ça sur mon Artcis 7 pour le moment, je me suis arrêté au niveau de batterie. Je me concentre sur les souris en ce moment.
Mais faudra que je regarde comment ça se passe lors de l'envoi des settings au casque... Si ça se trouve c'était ça les trouzmillions de paquets qu'il m'envoyait ^^'
@FLOZz Dans mon cas ce n’est pas trouzmillions, mais 5.
@aeris C'est déjà plus gérable :)
@FLOZz https://drop.infini.fr/r/dXcymDwz18#pgOpDh6JoKzcoxuv+jzvtgnRnMKyqKDXZbgA9S/BNYQ=
Ce que je vois passer en changeant pour les 4 niveaux de volume disponibles
@FLOZz La commande isolée serait 0x04400216c6, mais les valeurs semblent random…
@FLOZz Le niveau 0 est bien 0x0000, le 1 serait 0x0001, ça se gâte avec le level 2 qui devient 0x8001, et on finit avec 3 qui serait 0x0004… 🤷
@FLOZz A priori sur le Arctis 7 il y a une commande pour lui demander de persister l’information : https://github.com/Sapd/HeadsetControl/blob/master/src/devices/steelseries_arctis.c#L118-L122
@FLOZz Mais là j’en ai 3 quoi… 🤷