Petit Zaurus devient grand !
La connection d'un Zaurus a un vidéo-projecteur, c'est un peu la quête du Graal ou la pierre philosophale dans le monde du Zaurus : tout le monde veut le faire mais personne n'y arrive... et je l'ai fait ! Petit Zaurus peut maintenant avoir un grand écran. Petit mais costaud ! Bien sûr il n'est pas question de projeter de la vidéo mais seulement des images fixes (diaporama).
Récapitulons les étapes :
Le CFXGA, accessoire officiel de connection Compactflash => VGA pour Zaurus, est épuisé et totalement introuvable.
Sur un forum russe (j'avoue, je ne parle pas un mot de russe, mais google sait traduire !), j'apprends que tous les accessoires de type Compactflash => VGA ont le même chipset, et fonctionne donc de la même manière... et donc avec les Zaurus ! Il y a une demi-douzaines de modèles : Prolink PK201 et PK203, Pretec CompactPresenter, Margi Presenter-to- go, Colorgraphics voyager VGA, LifeView FlyPresenter CF.
Bien sûr, tous sont épuisés. Manifestement, les interfaces Compactflash ne sont plus à la mode...
EBay, Amazon,..., c'est nul : impossible de trouver un de ces accessoires d'occasion.
Par contre, les petits revendeurs, c'est bien ! En fouillant bien je trouve (là encore, traduisez avec google) :
Une boutique au Danemark qui vend des Prolink PK203
Une boutique en Grèce qui vend des Pretec
Une autre boutique en Grèce qui vend des Pretec
Une boutique en Israel qui vend des Prolink
HP aux états-unis qui vend des Colorgraphics Voyager
Un site de matériel spécifique pour personnes handicapées, en France qui propose un appareil ressemblant furieusement à un Colorgraphics Voyager
Je contact la boutique au Danemark, pas de réponse... la première boutique grec refuse de livrer en France... mais la seconde accepte pour la "modique" somme de 150€ ! Donc je saute sur l'occasion.
Je reçois l'engin 3 semaines plus tard
Il existe un driver pour le Pretec dans la ROM Cacko que j'utilise. Manque de bol, le driver est pour un noyau Linux 2.4.18 alors que les Zaurus récents ont un noyau 2.4.20. Donc pas compatible... Il suffirait de recompiler les sources, mais seuls les sources du driver originel pour le CFXGA sont disponibles, et pas celles pour le Pretec !
C'est l'occasion de s'essayer à l'ingénierie inverse. XDelta m'apprend qu'il n'y a que deux octets de différences entre les driver compilé pour noyau 2.4.18 pour le CFXGA et pour le Pretec ! Ensuite, objdump -D m'apprends que ces différences se situent dans des segments de données appelés "crt_800x600x60x16" et "crt_640x480x72x16" que je retrouve dans les sources. Et ça compile !
Vient le moment d'essayer... alors je branche mon Zaurus à un moniteur via le Pretec ; j'obtiens quelques images puis tout se met à planter. C'est l'hécatombe : les processus meurent sans raison apparente !
En supprimant une à une les fonctions dans le driver et dans le programme "mirroir" (cfxgamirror) qui lit l'écran du Zaurus (FrameBuffer) et écrit dans la carte Pretec, j'obtiens la conviction que le problème ne vient pas de l'écriture dans la carte, mais bien de la lecture du FrameBuffer ! Cela colle avec des messages de forum indiquant le même type d'erreur avec des CFXGA sur les Zaurus récents.
La lecture du FrameBuffer est faite via une série d'appel à mmap auquel je ne comprends pas grand chose... je vire tout ça et je le remplace par une simple lecture du fichier /dev/fb0
Et là... ça marche :-)
Plus d'info sur le forum Zaurus FR.