FXlink sur OpenBSD
Posté le 27/08/2022 17:53
Bonjour à tous,
Je suis en train de mettre en place le FXsdk, gint et autres cross-compilers
sur mon ordinateur tournant sur OpenBSD 7.1.
Jusque là, aucun soucis, j'arrive à créer des projets (uniquement avec Cmake,
make ne veut pas fonctionner (et oui, j'utilise la version de chez GNU, gmake)),
les compiler, sans erreur.
Lorsque que je veux les passer sur ma calculatrice Graph 35-e II (qui est
supportée) en utilisant fxlink (version libusb, pas udisks puisque udisks
n'existe pas sur OpenBSD), ma calculatrice est correctement détectée.
fxlink -l affiche:
fx-CG or G-III series (USB Mass Storage) calculator
Device location: Bus 0, Port 2, Device 2
Identification: idVendor: 07cf, idProduct: 6102
Guessed sysfs path: /sys/bus/usb/devices/0-2/
Serial number: 00000001
Properties: mass_storage, serial_number=00000001
(au passage, je suis obligé d'utiliser doas - l'équivalent de sudo sur
linux - pour qu'il puisse accéder aux périphériques USB. J'imagine
que c'est normal.)
Mais dès que je veux lancer le mode interactif pour envoyer des
fichiers (en utilisant fxlink -i), cette erreur revient en boucle:
error: bulk transfer failed on 0:2: Operation not supported or unimplemented on this platform
Après avoir activé le mode debug de libusb (avec le flag --libusb-log=DEBUG),
cette erreur plus détaillée s'affiche:
[ 2.821379] [0003483f] libusb: debug [libusb_alloc_transfer] transfer 0x10d2b4f5f50
[ 2.821384] [0003483f] libusb: debug [libusb_submit_transfer] transfer 0x10d2b4f5f50
[ 2.821389] [0003483f] libusb: debug [obsd_submit_transfer]
[ 2.821395] [0003483f] libusb: debug [libusb_free_transfer] transfer 0x10d2b4f5f50
error: bulk transfer failed on 0:2: Operation not supported or unimplemented on this platform
Tout de même, des allocations mémoire en guise de debug
c'est pas très intéressant pour investiguer, mais on fera avec.
Comme l'indique l'erreur, c'est spécifique à OpenBSD (parce
que la fonction est pas encore implémentée). Du coup, est-ce
qu'il y a un autre moyen d'envoyer des fichiers sur la calculatrice?
Je parle en terme de fonction alternative de libusb qui pourrait
faire le même travail ou simplement d'un autre soft *nix qui le
ferait aussi.
J'ai aussi tenté de regarder si la calculatrice n'avait pas simplement
créé un périphérique USB que je pourrais monter, mais apparament
non.
Désolé pour ce loooong post, et merci d'avance!
Citer : Posté le 27/08/2022 17:57 | #
Salut, ici tu utilises le backend libusb dont le principe est de communiquer directement avec le périphérique. Donc c'est normal que tu n'aies rien à monter, on n'est même pas en train de faire du système de fichiers. Le backend que tu utilises sert à communiquer des images, captures vidéo, etc. en temps réel depuis un add-in.
La "version libusb" et la "version udisks" ne sont donc pas deux alternatives mais bien deux parties séparées de fxlink qui implémentent chacune des fonctionnalités différentes.
Même si tu n'as pas UDisks2 sur OpenBSD, tu dois bien avoir un autre outil pour monter la calculatrice en mode utilisateur. La première étape serait de trouver lequel. Ensuite on peut étudier la possibilité de le supporter dans fxlink.
Je reste agréablement surpris parce que la dernière fois que j'ai tenté d'ajouter la compatibilité OpenBSD au fxSDK je ne parvenais pas à compiler binutils/GCC à cause d'erreurs de linker. x_x
Note qu'un certain nombre de scripts détectent la présence de gmake et l'appellent automatiquement, si tu as besoin de le faire à la main alors c'est peut-être un bug à corriger de mon côté.
Citer : Posté le 27/08/2022 18:26 | #
> La "version libusb" et la "version udisks" ne sont donc pas deux alternatives
> mais bien deux parties séparées de fxlink qui implémentent chacune des
> fonctionnalités différentes.
Oh, d'accord, je pensais que les deux permettaient de faire la même chose.
> Même si tu n'as pas UDisks2 sur OpenBSD, tu dois bien avoir un autre outil
> pour monter la calculatrice en mode utilisateur.
Quand tu parles de monter la calculatrice, tu parles d'une commande du genre
Si c'est le cas, lorsque je branche la calculatrice sur mon PC et que j'active le
mode USB, aucun périphérique n'apparaît de mon côté. Je ne sais pas si j'ai
mal configuré la calculatrice ou si c'est juste que OBSD ne la reconnaît même
pas.
> Je reste agréablement surpris parce que la dernière fois que j'ai tenté d'ajouter
> la compatibilité OpenBSD au fxSDK je ne parvenais pas à compiler binutils/GCC
> à cause d'erreurs de linker. x_x
Personellement, il y a just eu quelques erreurs comme quoi il trouvait pas certains
headers (parce qu'ils étaient dans /usr/local/include et non dans /usr/include, par ex.
il trouvait pas SDL2/SDL.h que j'ai du symlink) mais sinon ça a fonctionné normalement.
Après j'avais déjà compilés quelques cross-compilers avant pour faire un peu d'OS-dev,
donc j'avais déjà pas mal d'outils et de librairies déjà installées pour faire ce genre de trucs.
Aussi, sur OpenBSD la version de GCC qui s'installe quand tu utilises pkg_add c'est la version 4 x)
Il y a une manip à faire pour avoir la dernière version. Peut-être que les erreurs de linker venaient de là.
> Note qu'un certain nombre de scripts détectent la présence de gmake et l'appellent
> automatiquement, si tu as besoin de le faire à la main alors c'est peut-être un bug
> à corriger de mon côté.
La procédure d'installation à bien détecté gmake, pas de problème la-dessus.
fxsdk new par contre utilisait make et ne détectait pas gmake, j'ai du bidouiller un peu.
Mais même avec gmake, lorsque je build avec le makefile j'ai pas mal d'erreurs de compilation
(je me souviens plus trop des erreurs, il faudrait que je reteste. J'envoie les logs dès que j'ai plus
de détails).
Ah, et fxsdk utilise des options et programmes spécifiques aux coreutils GNU, par exemple
getopt renvoie des erreurs comme quoi l'option existe pas et pareil pour cp. Pas très très grave,
j'ai les coreutils gnu installés à côté si jamais, donc j'ai su me débrouiller avec eux.
Je me renseigne pour monter la calculette et je reviens ici.
Merci encore
Citer : Posté le 27/08/2022 18:30 | #
Si t'as besoin de mettre des fichiers dessus, utilise le mode "clé usb".
Sinon, bonne chance !
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 27/08/2022 18:33 | #
Quelque chose que j'ai oublié de préciser c'est que la Graph 35+E II émule bien un périphérique SCSI standard. Tu dois pouvoir la monter par ton gestionnaire de fichiers, et oui avec mount /dev/sd* ou un autre périphérique du même style.
fxlink n'invente rien (pas comme FA-124 par exemple) et sert juste à automatiser sur la ligne de commande l'action d'utiliser le gestionnaire de fichiers pour copier les fichiers.
Donc la première étape c'est bien de s'arranger pour que ton système détecte et monte la calto, et ensuite on peut voir quels outils sont utilisés et si on peut automatiser la chose via un programme C.
Oh wow, c'est bien possible que je sois tombé dans le piège. Si tu as assez de notes et de temps pour m'aider à adapter les scripts, je suis preneur. Ils sont tout juste fraîchement revus et bien propres en plus.
Oh oui ça c'est euh... teste... normal, le Makefile est pas vraiment tenu à jour. >_>
Ah oui c'est un peu casse-pieds ça. Je suis ouvert à adapter ce qu'il faut pourvu que ça ne nous fasse pas écrire des tartines de code en plus.