Pimp my keyboard

Aujourd'hui, j'ai reçu un petit colis de WASD Keyboards.

J'avais franchement besoin de remplacer intégralement les touches de mon clavier mécanique. J'avais acheté en 2012 deux claviers Leopold, l'un avec des interrupteurs Cherry MX Blue, pour chez moi, et l'autre avec des Cherry MX Brown pour un usage au boulot. Ce dernier est mon outil de travail de prédilection, bien que j'aie été contraint d'installer des coussinets en mousse sous chaque touche pour absorber un peu le bruit.

Mon clavier avec les touches d'origine.
Mon clavier actuel du boulot, qui va recevoir une transplantation d'un jeu entier de 87 touches…

Pour faire simple, j'aime beaucoup ce clavier. Je ne me vois certainement pas revenir en arrière vers des claviers traditionnels. Le principal problème que j'ai eu cependant est la qualité de construction des touches. Au bout de quelques années, les touches en plastique commençaient à montrer des signes de faiblesse.

Au bout de quelques années de Vim, voilà l'état dans lequel je pouvais retrouver une touche.

Détail d'une touche cassée
Détail d'une touche cassée ; remarquez la tige fêlée. Excès de rage ou excès de zèle ; mes collègues et moi ne sommes toujours pas d'accord.

Une touche cassée comme ça n'est heureusement pas difficile à réparer : recollez avec de la Loctite®, pressez avec une pince plate, attendez un peu et c'est reparti. Mais quand c'est la trente-quatrième touche qu'on doit réparer comme ça, au bout d'un moment, j'ai craqué.

Le site WASD Keyboards propose un petit outil sympathique qui permet de concevoir sa propre disposition de clavier (on peut même leur envoyer un fichier .svg lorsqu'on souhaite modifier les impressions sur les touches). J'en profite aussi pour subsituer un logo Tux aux touches « Windows », un « awesomeface » à la touche F5, une touche Compose à la touche « Alt Gr » et à ajouter des flèches directionnelles sur les touches HJKL. Sept ans de Vim et plusieurs années de i3 et de awesome auront fait leur boulot. Enfin, quatre-vingt-sept changements de touches plus tard, voilà le résultat :

Pimp my clavier.
Je pense que je pourrais désormais l'appeler « clavier orange mécanique ».

Bien que mon clavier soit un Leopold, toutes les touches de WASD Keyboards passent sans problème dessus… à l'exception de la barre d'espacement : les trois points d'attache de la barre d'espacement ne correspondent pas à ceux prévus à cet effet sur le Leopold. Il vous faudra donc garder la barre d'espacement de votre Leopold si vous envisagez de faire la même chose.

En tout cas, WASD Keyboards a l'air d'avoir fait un superbe boulot (les photos au smartphone ne font hélas pas vraiment justice). D'autant plus qu'on fait de son clavier mécanique un outil véritablement personnalisé. Il ne reste plus qu'à voir combien de temps ces touches vont tenir !

Posté par x0r à 3 commentaires • Tags : clavier mecanique

Socotel S63 avec Asterisk

Il y a trois ans, lors du vide-greniers annuel que j'aime tant fréquenter, j'avais mis la main sur un Minitel 1B. Cette année, j'y ai mis la main sur un téléphone à cadran Socotel S63.

Mon Socotel S63
Mon Socotel S63

Pour la petite histoire, ce téléphone a été fabriqué par la Société des Constructeurs de Téléphone et dont les premiers modèles dateraient de 1963. Je suis hélas trop jeune pour les avoir connus, mais ces téléphones sont apparemment très répandus en France et en ouvrant un peu l'œil, on peut en trouver de nombreux exemplaires dans des vide-greniers.

Le mien sera bien entendu branché sur ma tour servant de PBX avec Asterisk, grâce à sa carte OpenVox A400P.

Numérotation à impulsions

Ce téléphone à cadrans utilise cependant l'ancien système de numérotation à impulsions, contrairement à la numérotation à fréquences vocales (DTMF) quasi-omniprésente de nos jours.

Le système de numérotation à impulsions (aussi appelée numérotation décimale) consiste à envoyer des trains d'impulsions sur la ligne téléphonique : une impulsion pour le chiffre 1, deux pour le chiffre 2, et ainsi de suite jusqu'à dix pour le chiffre 0. Ces impulsions consistent en une ouverture du circuit de la ligne pendant 33,3 ms (comme si on appuyait sur le bouton de raccrochage) puis une fermeture du circuit pendant 66,7 ms.

Ce système est toujours accepté sur les commutateurs téléphoniques de France Télécom (si vous possédez une ligne fixe « classique » non liée à une offre VoIP d'une box quelconque), mais n'est plus acceptée par les box Internet. Ces box nécessitent l'adjonction d'un boîtier de conversion de numérotation décimale vers DTMF au téléphone pour pouvoir numéroter correctement.

Cela dit, Asterisk accepte également la numérotation par impulsions. Cependant, pour que cela fonctionne correctement, il faut charger le module wctdm (pilote de la carte OpenVox A400P) avec l'option dialdebounce=32. Cette valeur est positionnée par défaut à 64 (millisecondes), empêchant la bonne détection des impulsions : un 1 qui n'est pas détecté du tout, un 4 qui devient un 2 ou un 3...

Mon fichier /etc/modprobe.d/dahdi.conf sur mon système est ainsi le suivant :

options wctdm opermode=TBR21 dialdebounce=32

Avec cette ligne, le Socotel marche à merveille, et il m'est alors possible de faire sonner mon téléphone IP sur mon bureau en composant son numéro interne sur le cadran du Socotel. Ou bien d'entendre la sonnerie si appréciée du Socotel en composant son numéro sur mon téléphone IP. Cerise sur le gâteau : je peux même passer des appels via ma ligne téléphonique Livebox, alors que la box elle-même n'accepte pas la numérotation à impulsions ; Asterisk faisant lui-même la conversion entre impulsions et DTMF.

Je tiens à préciser qu'aucune autre modification de la configuration d'Asterisk n'est nécessaire pour accepter la numérotation décimale.

Petite optimisation de sonnerie et de présentation du numéro

J'en profite pour documenter une petite optimisation que j'ai trouvée pour réduire le délai entre le début de la sonnerie d'une ligne analogique et l'affichage du numéro sur un téléphone analogique avec présentation du numéro.

En effet, en France, le numéro de l'appelant est transmis entre la première et la deuxième sonnerie. Or certains téléphones analogiques ne sonnent pas tant qu'ils n'ont pas reçu le numéro de l'appelant, ce qui les font systématiquement sonner avec 4 secondes de retard par rapport à mes téléphones IP...

C'est pour cela que France Télécom modifie sa cadence de sonnerie pour ne faire qu'une courte première sonnerie (250 ms), puis une pause de 2 secondes pour transmettre le numéro de l'appelant, pour ensuite continuer avec la cadence normale de sonnerie (1,5 s puis 3,5 s de silence).

Pour faire de même, il suffit de paramétrer /etc/asterisk/chan_dahdi.conf ainsi :

[channels]

progzone=fr
defaultzone=fr
cadence=250,-2000,1500,3500,1500,3500,1500,3500,1500,3500,1500,3500,1500,3500,1500,3500

Ensuite, il faut modifier son plan de numérotation (extensions.conf) afin de substituer les canaux DAHDI/Xr1 à DAHDI/X. Par exemple Dial(DAHDI/1) devient Dial(DAHDI/1r1).

Il ne reste plus qu'à recharger le module noyau wctdm (oui oui, il le faut) puis redémarrer Asterisk pour appliquer ces changements.

Posté par x0r à 3 commentaires • Tags : asterisk téléphone socotel s63 pbx

À la recherche du TGV postal

Les jours des TGV postaux sont comptés et il ne leur reste plus qu'un mois avant d'arrêter définitivement de circuler sur le réseau ferré national.

La rame n°952 au Technicentre TGV Sud-Est
La rame n°952 en unité multiple avec la n°951 au Technicentre TGV Sud-Est.

C'est donc dans un but de les photographier une dernière fois que j'ai essayé de partir à leur rencontre. J'ai pu repérer trois rames, la n°951 et la n°952 en unité multiple d'une part, et la n°953 d'autre part, toutes deux stationnées au Technicentre TGV Sud-Est. Mais cela a surtout été l'occasion pour moi de découvrir des paysages (ferroviaires) inhabituels pour le commun des mortels, accessibles depuis la voie publique mais pourtant faciles à rater lorsqu'on n'ouvre pas l'œil.

Je vous laisse donc admirer l'album photo que j'ai fait de cette petite escapade, le temps pour moi de me reposer un peu entretemps et retrouver la motivation de publier des billets plus techniques par la suite. Six mois sans vacances, ça commence à me taper sur les nerfs…

Posté par x0r à 6 commentaires • Tags : train photo tgv postal trainspotting

Profiter au maximum d'un Canon EOS 50D sous Linux

Passion pour la photo et projets récents d'astrophoto obligent, j'ai été amené à remplacer mon ancien boîtier reflex par un Canon 50D d'occasion.

Dans ce court billet, je vais documenter quelques fonctionnalités de cet appareil photo qui sont accessibles avec gphoto2, et pour lesquels on n'est pas obligé d'installer les logiciels de Canon sur un quelconque système d'exploitation propriétaire. Je parlerai notamment des informations de copy­right personnalisées que l'on peut programmer et que le boîtier inscrira automatiquement dans les informations EXIF des photos, et je parlerai également de la prise de vues par USB.

Le but de ce billet n'est pas d'être un tutoriel complet, mais de parler des choses un peu plus délicates qui sont possibles avec gphoto2 et d'informations qui concernent ce modèle particulier, ou d'autres de la même gamme.

Informations de copyright personnalisées

Tout d'abord, le boîtier accepte trois chaînes de caractères personnalisées, qu'il inscrit dans les informations EXIF de manière systématique dans chaque photo. Étant donné que j'avais entre les mains un boîtier d'occasion, il s'agissait pour moi de supprimer le plus vite possible les informations qu'avaient saisies le propriétaire précédent pour les substituer avec les miennes.

On peut ainsi programmer le nom de l'auteur, une information de copyright (par exemple « Tous droits réservés » ou « CreativeCommons CC BY-NC-SA », ou peu importe) et le nom du propriétaire du boîtier. En respectant ma tradition de pseudonymat, j'ai alors procédé de la manière suivante :

% gphoto2 --set-config '/main/settings/artist=x0r'
% gphoto2 --set-config '/main/settings/copyright=Tous droits reserves'
% gphoto2 --set-config '/main/settings/ownername=x0r'

À noter que le boîtier fonctionne mal avec l'UTF-8 ; je n'ai cependant pas essayé de lui donner de chaînes en ISO-8859-1 pour voir si ça passe.

Capture d'images par USB

Comme tous les boîtiers Canon que j'ai eues entre les mains, il est possible de déclencher la capture d'une photo par USB.

Cette fonctionnalité est plus utile qu'on le pense : par exemple, lorsqu'on tient un stand photo et qu'on veut afficher directement les photos prises sur un grand écran pour traitement numérique ou impression (une technique appelée « tethering »). J'utilise également cette fonctionnalité dans un script transformant un PC en télécommande intervallomètre (l'« intervallomètre du pauvre », parce que j'attends d'avoir une vraie raison pour claquer 100 euros dans une télécommande-intervallomètre de Canon).

Les commandes de capture restent inchangées :

% gphoto2 --capture-image
% gphoto2 --capture-image-and-download

La première commande prend une photo et l'enregistre sur la carte CF. La seconde commande fait de même, mais récupère immédiatement le fichier.

Cependant, il m'est déjà arrivé de voir que mes photos n'étaient pas enregistrées sur la carte CF après avoir utilisé une de ces commandes. Il faut alors demander à l'appareil de stocker les photos capturées sur la carte CF et non pas dans la RAM interne (où toute prise de vue est immédiatement détruite). La commande « magique » est la suivante :

% gphoto2 --set-config '/main/settings/capturetarget=1'

Nombre de déclenchements

Connaître le nombre de déclenchements qu'a fait un boîtier est particulièrement utile lorsqu'on cherche à en acheter un ou à le vendre. Heureusement, encore une fois, pas besoin de systèmes d'exploitation ni d'outils propriétaires ; une simple commande suffit :

% gphoto2 --get-config /main/status/shuttercounter

Notez que le nombre de déclenchements peut être largement supérieur aux numéros des fichiers enregistrés sur la carte CF. Je soupçonnais que le mode « Live View » était responsable de cela, mais ça n'a pas l'air d'être le cas : même une photo prise en Live View incrémente le compteur de 1. C'est étrange, car cette fonction provoque pourtant la remontée du miroir et l'ouverture de l'obturateur, comme pour prendre une photo.

Conclusion

Mis à part quelques éléments un peu bizarres (la commande « magique » pour faire marcher les prises de vues par USB et les bizarreries liées au compteur d'obturation), il n'y a vraiment pas grand-chose de bien surprenant dans ce boîtier en termes de prise de contrôle par USB. Dans tous les cas, je salue le travail de rétroingénierie qui a dû être fait pour obtenir toutes les informations liées à la connectivité USB, de même que ce qui a dû être fait pour déchiffrer les informations EXIF propriétaires (« MakerNotes ») enregistrés par les différents boîtiers.

Posté par x0r à 1 commentaire • Tags : linux photo canon 50d eos

Orange : IPv6 se concrétise (presque)

Mise à jour du 14 février 2016 : ce billet est obsolète ; vous trouverez un billet de mise à jour ici.

Après avoir longuement parlé de l'offre IPv6 de Free il y a quelques années, je considérais que l'IPv6 restait le grand absent des offres Livebox pour les particuliers.

Mais on dirait que ça va bientôt changer, car dans la nuit du 23 au 24 mars 2015, le firmware de ma Livebox a été mise à jour à la version SG30_sip-fr-5.7.16.1. Et quelle fut ma surprise quand j'ai vu un onglet « Internet IPv6 » apparaître dans mon interface d'administration !

IPv6 par Orange, un jour peut-être...
Mazette, c'est Noël en retard !

Et quelle fut ma déception quand, lorsque je clique sur le bouton "activer", rien ne se passe.

En tout cas, cela signifie donc bien que le déploiement de l'IPv6 par Orange touchera les particuliers dans un futur proche. Dans combien de temps, je l'ignore ; mais en tout cas, je le suivrai de près.

Pour ceux qui se sont intéressés à la supervision de la Livebox par Nagios, l'URL « sysbus » utilisée pour obtenir l'état de la connectivité IPv6 est :

http://192.168.1.1/sysbus/NMC/IPv6:get

et comme d'habitude, on peut obtenir l'état de la connectivité IPv6 avec une requête POST contenant :

{"parameters":{}}

Le résultat, chez moi, est le suivant :

{"result":{"status":null,"data":{"Enable":false,"IPv6Address":""}}}

Le "Enable": false signifie donc bien que ce n'est pas encore pour tout de suite.

La surprise suivante sera de savoir à quoi ressembleront nos préfixes IPv6, quelles seront leurs tailles (je serai un peu déçu si ce ne sont que des /64), s'il sera possible de faire de la délégation de routage dessus, si le préfixe IPv6 ne va pas changer toutes les semaines et si cela signifiera (enfin) la fin des adresses IPv4 dynamiques. À suivre.

Posté par x0r à 2 commentaires • Tags : orange ipv6 déploiement