Je récapitule.
Tes switchs sont bien installés et configurés, quand tu les tests manuellement individuellement, tu vois bien leur état changer dans grbl. Pas besoin de faire fonctionner la machine, il suffit d'appuyer sur les contacteurs et de vérifier que c'est bien l'indicateur correspondant qui change d'état et bien sur dans le bon sens suivant si ils sont en NC ou NO.
Les moteurs et step/mm sont biens configurés, un déplacement demandé de 50mm donne bien la bonne distance dans la bonne direction.
Dimensions de la machine (courses) sont bien renseignées.
La course de rétractaction après le premier contact est suffisante, les vitesses de homing sont "raisonnables".
Suivant le soft que tu utilises et la configuration, il peut être nécessaire de commencer par déverrouiller la machine avec un $X. Il y a peu de chance que ce soit ce qui te pose problème dans la mesure ou le soft n'accepte aucune commande quand il est en sécurité.
Quand tu places tes axes en position mi-course avant de lancer un homing global, tous les switchs retournent un état OK au niveau de GRBL ?
Essayes des homing séparés pour tester le fonctionnement, $Hx, $Hy, $Hz
Le error:9 correspond, chez moi, à la recherche fine du switch qui n’aboutit pas.
ex) je lance un homing sur un axe, j'actionne manuellement le switch (comme pour un premier contact en mode rapide) le chariot recule d'une certaine distance puis avance en mode lent pour valider la position. Si le switch n'est pas trouvé dans une distance équivalente au recul, la machine sort une erreur:9.