HandWheel" XHC-HB04 et LinuxCNC
********************************************************************
EDIT 1/1/2017
Cette procédure est obsolète : avec LinuxCNC 2.7 (Debian) l'installation d'une XHC-HB04 est beaucoup plus simple.
Voir en page 4 de cette discussion
********************************************************************
C’est parti !
Tout d’abord, une précision : je ne suis pas l’auteur la chose. Celle-ci est l’œuvre d’un développeur anglophone qui a mis à disposition ses travaux dans le wiki de Linuxcnc.org. Malheureusement, comme beaucoup de dieux vivants de l’informatique, il est très fort pour réaliser un soft complexe, mais semble ne pas voir la nécessité d’explications basiques pour les simples mortels comme vous et moi.
J’ai donc essayé de ramener ça à une dimension plus humaine – et en bon français - pour que l’adaptation soit réalisable par quelqu’un dont le niveau correspond à savoir comment lancer le terminal de Linux, se doute à quoi sert une commande comme « sudo gedit… » et est capable de se balader dans les répertoires avec « cd ..» et « dir ». Ce qui est à peu près mon niveau sous Linux ! Petit rappel : contrairement à DOS, Linux fait la différence entre majuscule et minuscule… Ne pas s’énerver et
se relire avant de taper Entrèe !
[glow=red]
La Handwheel Xhc-HB04[/glow]
Si aujourd’hui (le 3/3/2014) on tape « handwheel » dans la fenêtre de recherche d’ebay, on trouve un ancien modèle venant de Hong-kong et pour lequel a été développé le soft. Il a 16 boutons dont X=0, Y=0, Z=0. Si on étend la recherche au monde entier, on trouve un modèle chinois plus récent, avec cordon usb et équipé de 18 boutons. En cherchant encore un peu on trouve des modèles similaires « whireless ». Sur les modèles récents les boutons X=0, Y=0, Z=0 ne sont plus là et ce sera une des causes de nos petits soucis. Il existe également un modèle avec pleins de boutons et pas de molette = pas ça !
Les prix, whireless ou pas se situent entre 75€ et 90€
J’utilise le modèle chinois avec 18 boutons, une molette et un cordon Usb. C’est celui-là dont au sujet duquel je vais causer. Pour l’anecdote, il a mis 2 ½ mois à venir à pied de la Chine, parce que j’ai été assez couillon pour le commander au moment du nouvel an chinois !
On va procéder en 2 étapes :
1 - D’abord faire marcher la handwheel proprement dite et son affichage de position.
2 - Ensuite voir ce que l’on peut faire avec les boutons qui, s’ils conviennent à Mach3 ne sont pas adaptés à l’interface Axis de LinuxCNC.
J’ai supposé que l’installation de Linuxcnc a été faite de façon standard (nom des répertoires, etc.) Sinon, faudra s’adapter…
Les liens utiles :
=>
la page wiki de LinuxCNC.org où est – succinctement - décrite la manip.
=>
un échange sur le forum LinuxCNC.org où l’auteur papote avec des amis.
=>
la liste de Pins Halui qui sera bien utile pour configurer sur les boutons.
=> je ne vous fais pas l'injure d'un lien vers le manuel Gcode

Mais personnellement j'en ai toujours besoin !
[glow=red]
I- Faire marcher la Handwheel et l’affichage[/glow]
a) Installer les outils et bibliothèques nécessaires. Dans le terminal, passer les commandes suivantes :
sudo apt-get install linuxcnc-dev
sudo apt-get install libc6-dev
sudo apt-get install libusb-1.0-0-dev
(Si ces modules sont déjà installés, ça le dira, mais ce n’est pas grave…)
b) Créer un fichier « 90-xhc.rules » dans le répertoire protégé « /etc/udev/rules.d ». Pour cela, dans le terminal, passer la commande :
sudo gedit /etc/udev/rules.d/90-xhc.rules
L’éditeur Gedit ouvre le nouveau fichier, copier la ligne suivante et coller-là dans le nouveau fichier :
SYSFS{idProduct}=="eb70", SYSFS{idVendor}=="10ce", MODE="666", OWNER="root", GROUP="users"
Ce fichier est indispensable pour permettre l’accès au port USB. Un reboot de la machine est nécessaire pour qu’il soit pris en compte.
c) Dans le terminal, créer un répertoire réservé aux fichiers sources de la XHC-HB04 avec les 2 commandes suivantes :
cd linuxcnc
mkdir XHC-HB04
d) Télécharger le fichier archive
upload
hc-hb04-V06.tgz
e) Extraire les fichiers dans le répertoire nouvellement créé : XHC-HB04. L’extracteur créé un sous-répertoire \src… tant pis !
f) Avec le terminal, aller dans ce sous-répertoire et lancer les make suivants
(cd linuxcnc) <= si nécessaire
cd src
make
make install
(A noter que pour revenir en arrière, la commande est make clean)
[glow=green]A partir d'ici, si vous souhaiter adopter ma config, ou vous en servir de base pour créer la vôtre, vous pouvez sauter les étapes suivantes et passer à "II- Configuration des boutons"[/glow]
g) Copier les fichiers xhc-hb04.hal et xhc-hb04-layout*.ini dans le répertoire « config » de la machine CNC qui utilisera la handwheel
h) Pour commencer les tests, il va vous falloir rajouter a minima une ligne dans la section [HAL] du fichier <mamachine>.ini :
[HAL]
...
HALFILE = xhc-hb04.hal
A noter que si vous utilisez stepconf pour modifier la config de cette machine, cette ligne (et les autres que vous aurez été amené à rajouter) disparaitra. Il est donc prudent d’archiver les modifications du fichier <mamachine>.ini dans un autre fichier pour pouvoir les récupérer !
Dans le fichier xhc-hb04.hal on peut choisir si on utilise un modèle 16 boutons (layout1.ini) ou 18 boutons (layout2.ini) en adaptant la ligne :
loadusr -W xhc-hb04 -I xhc-hb04-layoutN.ini -H
[glow=red]
Premiers tests [/glow]
Si toutes les étapes précédentes ont été menées correctement, lorsque vous allez lancer Linuxcnc... Et ça ne marchera pas ! Ha ha ! Je vous ais bien eu !

Non, je déconne. Ça ne marchera probablement pas, mais avec les informations de débogage, on peut s’en sortir.
Dans le fichier Linuxcnc errors (qui s’ouvre automatiquement quand ça plante), à la rubrique « debug file information » et après des chouineries can’t find gna gna, on trouve des lignes utiles comme :
xhc-hb04.hal:31: Pin ‘halui.jog.3.plus’ does not exist
Cette ligne veut dire qu’il y a une erreur dans le fichier hal à la ligne 31. On va en ligne 31, on met un caractère # devant la ligne (elle devient un commentaire) et on refait un test.
Comme annoncé plus haut, il est probable que toutes les lignes relatives aux boutons X=0, Y=0, Z=0 vont devoir être passées en commentaires : normal, ces boutons n'existent pas
Si la ligne d’erreur parle d’autre chose que les Pins de hal (accès à l’usb par exemple, c’est que vous avez loupé une étape… vérifiez et recommencez)
Normalement, ça va finir par marcher et à ce stade de l’affaire on doit pouvoir commander les déplacements en X, Y, et Z. L’affichage est mis à jour avec les positions absolues et relatives.
Pour les boutons, c’est une autre paire de manche.
[glow=red]
II- Configuration des boutons[/glow]
La configuration des boutons dépendra des habitudes et préférences de chacun. L'un voudra ci, l'autre ça... Et puis je ne suis pas sûr d'être le plus représentatif des utilisateurs de LinuxCNC. Donc, ce que je vous propose : vous téléchargez ma config (fichier joint), je vous la commente, et si elle vous plaît tel quel vous l'adoptez sinon vous l'adaptez
Donc, pour mettre la config que je vous propose en service, il faut :
- supprimer du répertoire config de la machine qui utilisera le handwheel tous les fichiers qu'on a pu y mettre lors de la première étape (ça fera du ménage). C'est à dire les fichier
xhc-hb04-layout*.ini, le fichier
xhc-hb04.ini,
xhc-hb04.hal, etc.
- décompresser le fichier
xhc-hb04-skippy.tar dans le répertoire config
- aller dans le fichier
Lisez-moi-xhc-hb04.txt pour y chercher les lignes à copier dans le fichier
<mamachine>.ini
Il y a aussi le fichier
bouton-xhc-hb04.pdf avec l'image qui m'a servi à faire un masque pour "habiller" la handwheel (photo)
En résumant, les boutons du XBC-HB04 peuvent être associés à des
Pins halui ou bien associés à des commandes manuelles en GCode (mdi commands) :
- Ces commandes mdi sont écrites dans une section [HALUI] du fichier
<mamachine>.ini
- La déclaration (le nommage) des boutons est faite dans le fichier
xhc-hb04.ini
- l'association entre boutons et pins halui ou commandes mdi est faite dans le fichier
xhc-hb04.hal (les 2 derniers paragraphes)
A partir de là, le mieux est de regarder comment c'est fait ! Et puis, vu le déchaînement de passions pour ce topic

- je vais pas y passer la nuit non plus ! Félicitations à ceux qui m'ont lu jusqu'au bout. N'étant pas nombreux, ils ont le droit de faire un petit coucou en laissant un post : je me sentirai moins seul ! Si par miracle, mon boulot permet à quelqu'un d'adapter une handwheel... là ce serait la consécration !
A+
Skippy
Normalement, tout est dans le fichier archive...
Edit : si ça peut rassurer les inquiets : je viens de configurer une machine "vierge" en suivant la procédure pas à pas. = à peine 10 minutes, marche du premier coup.
A noter que le module libc6-dev était déjà présent et qu'il manquait la ligne HALUI=halui dans le .ini
Voir la pièce jointe xhc-hb04-skippy.tar