jan 05
Suite à mes tests avec les AVR d’ATMEL et l’implémentation logicielle USB, j’ai testé l’interface avec la plateforme hardware via un script python s’appuyant sur le module python usbtiny fourni avec l’implémentation logicielle USB.
Un problème qui me bloque actuellement est l’utilisation de cette interface de communication sous Mac OS X.
J’ai installé la libusb (téléchargée depuis un projet développé pour utiliser des scanners sous Mac OS X). Les fichiers installés semblent se trouver dans /usr/local/lib, /usr/local/include. Dans la version linux, le wrapper utilisé pour communiquer entre le module python et la libusb avait été généré automatiquement par Swig. Le fichier libusb.py généré contient la ligne “import _libusb” qui doit faire référence au fichier _libusb.so dont le type ne correspond pas à une librairie sous Mac OS X :
ImportError: dlopen(./_libusb.so, 2): no suitable image found. Did find:
./_libusb.so: unknown file type, first eight bytes: 0×7F 0×45 0×4C 0×46
Une piste qui explique comment générer un wrapper avec Swig sous Mac OS X (et les différences avec la génération du wrapper sous Linux).
Suite au prochain épisode…
written by Mathias
août 25
Quelques idées de trucs sympas (et complètement inutiles) qui peuvent donner un joli bureau sous Linux/Ubuntu :
- AWN avant-window-navigator Barre de lancement animée (cf Dock de Mac OS)
- Compiz on ne le présente plus / Fusion 3D
- Plymouth qui donne un rendu graphique pendant le boot (ou grub-gfx …)
- gDesklets à retester pour voir si c’est plus stable qu’à l’époque de mes premiers tests…
- adesklets / screenlets
- Conky A interfacer avec des scripts sur un serveur pour monitorer l’etat des disques… (cf ici) avec une connection ssh sans password au serveur + qq scripts pour récupérer les principales infos pour pouvoir les afficher sur mon poste (ou à défaut, un truc du style Eterm -O0xqC –buttonbar 0 –scrollbar 0 –no-cursor -f green –exec ssh login@serveur “/usr/bin/tail -f /var/log/syslog”)
- GKrellM (a l’air moins configurable niveau visu… à tester)
- Tilda
Dans les autres trucs à installer/tester :
- Dropbox pour partager les fichiers entre Mac Linux & Windows
- gnome-do
Ca peut toujours etre utile :
Une distrib à tester : ELive (Debian + e17)
written by Mathias
août 20
Juste une idée d’un petit projet qui pourrait prendre quelques soirs dans la semaine (ou plus si affinité) : à la suite de la lecture d’un article sur l’organisation de la fuite d’informations depuis un poste distant dans le MISC n°44 de cet été (juillet/aout 2009), je me dis que pour tester, il pourrait être intéressant d’utiliser une broche d’un AVR typiquement reliée à une led pour lui permettre de communiquer avec le monde qui l’entoure. En résumé utiliser les 2 états (éteint/allumé) et/ou le temps d’allumage (…) pour transmettre des bits à l’environnement extérieur.
Cette petite expérience ne nécessite pas beaucoup de matos (voire même aucune modification matériel sur du matos existant) mais nécessite néanmoins quelques tests pratiques pour définir des valeurs correctes.
L’autre partie intéressante de cette expérience serait d’utiliser un capteur (iSight, photodiode/photorésistance voire pourquoi pas LED…) pour pouvoir décoder en temps réel les informations transmises par le montage.
Ce principe serait/devrait aussi être applicable en utilisant le son comme media de communication…
Le dévéloppement d’une petite bibliothèque AVR et de petits utilitaires côté hôte pourrait être très pédagogique.
written by Mathias
oct 23
Après quelques rapides recherches sur Google, il s’avère que certains ubunteros ont fait fonctionner ce lecteur d’empreintes digitales sur des configurations matérielles proches de la mienne. Donc pourquoi pas moi ?
Le site de référence.
- Téléchargement des sources de libfprint et tentative de configuration…
- Manque libcrypto
- Pas de réponse de yum à ce sujet
- Installation d’un nouveau repository :
- Finalement pas mieux, mais un doute s’empare de moi :
- [mathias@localhost libfprint-0.0.6]$ ls /lib/libcrypt*
/lib/libcrypt-2.5.so /lib/libcrypto.so.6
/lib/libcrypto.so.0.9.8b /lib/libcrypt.so.1
-
"you might have missed to install the -dev or -devel package (like
libssl-dev) which provides the pkg-config file (ie
/usr/lib/pkgconfig/libcrypto.pc and the like)."
- sudo yum install openssl-devel
- pkg-config –exists –print-errors openssl; echo $? –> 0 \o/
- sudo yum install ImageMagick-devel
- ./configure
- make
- sudo make install
- Téléchargement de fprint-demo
- ./configure && make && sudo make install
- Téléchargement pam_fprint
- ./configure && make && sudo make install
- pam_fprint_enroll –enroll-finger 7
- sudo vim /etc/pam.d/system-auth
- auth required pam_env.so
> auth sufficient pam_fprint.so
> auth sufficient pam_fprint.so
> auth sufficient pam_fprint.so
- 3 tentatives de fingerprint successives au cas où la première ne suffirait pas
- Test…. OK \o/
written by Mathias
sept 19
Depuis quelques temps, le fonctionnement de Deezer a changé : il ne lit pas automtiquement tous les résultats d’une recherche, il faut clicker sur chaque résultat…
Du coup, j’écoute plus les radios (avec une préférence pour la radio Covers), mais à chaque nouvelle chanson, je suis obligé d’arrêter ce que je fais pour revenir sous Firefox et voir sur Deezer le titre et l’artiste du morceau en cours de lecture. Je me demandais donc s’il n’était pas possible d’avoir une notification avec les informations relatives au morceau en cours (comme le font rythmbox & consort).
Après une recherche rapide et infructueuse, je me suis orienté vers le développement d’une solution perso, j’ai donc installé wireshark (tcpdump/ethereal/… ce que vous voulez) et sniffé mon interface réseau pendant que je jouais quelques morceaux sous Deezer : les informations concernant le morceau en cours de lecture transitent en clair.
J’ai ensuite codé un morceau de code en C à grands renforts de tutoriaux libpcap et de sites internets dédiés à la programmation en C : lecture des trames réseaux concernées et extraction de certaines infos de ce paquet (via une routine roulée à la main sous les aisselles) : titre, artiste et album, et utilisation d’un outil system “send-notify” pour afficher ces infos.
Bon j’ai pas fait des miracles : je n’ai pas fait de C depuis plus de 10 ans (hormis quelques manipulation de bits dans des “hello world” embarqués… résultat : des segfaults
mais un début de proof of concept !
Next step : meilleur filtrage des trames, ne pas se concentrer sur l’analyse trame par trame mais envisager les communications dans leur ensemble (requete + reponse), utilisation de musicBrainz pour obtenir d’avantage d’infos ? Récupérer aussi l’image de la couverture de l’album en cours pour affichage dans la notif…
A suivre.
written by Mathias
mai 09
L’idée : faire un radio réveil avancé à partir d’un PC.
Bios : wake up automatique à 6h00 tous les matins.
Lancer la tache “réveil” avec un crontab.
La tach réveil:
- Détecter présence sur place (mode local/distant) via bluetooth du tel en attendant de trouver mieux.
- Syncronisation du calendrier interne avec calendrier publié sur le net (Google Calendar) qui doit etre à jour (ou avec calendrier téléphone via bt ?)
- Récupération heure de réveil pour le jour de la semaine (fichier de configuration par défaut)
- Recherche d’événement spécifique pour la journée d’aujourd’hui (chaque jour de la semaine, vacances scolaires, jour férié…)
- A partir du calendrier + hre par défaut (+ jour férié ?) –> détermination de l’hre du réveil
- Réveil :
- Si mode distant : mise à jour calendrier google pour etre prévenu par sms du réveil (avec récapitulatif événements de la journée ?… pas forcément utiles car un sms envoyé par google X minutes avant chq événement)
- Si mode local : allumage de la chaine (envoi signal IR via un boitier USB ?) mesure du bruit local, lancement lecteur musique au volume le plus bas, puis augmentation du volume progressive (rapide au départ jusqu’à ce que la valeur mesurée atteigne un seuil fixé (fichier de propriétés), ensuite augmentation progressive. Lors de la réception d’un signal IR (de la télécommande) ou clavier () interruption de la lecture (voire, si aucune autre action prévue, arret du PC / mode veille prolongée pour réveil plus rapide).
Reste à faire : tout.
Problèmes potentiels :
- lancement de taches alors qu’aucun user n’est loggé (sauf peut etre en cas de wake up suite à une veille prolongée…)
- Sécurité : hébergement chez hébergeurs gratuits (eg free) => http… voir possibilité hébergement https ou autres options pour sécuriser les transactions
A lire :
written by Mathias
mar 20
Youpi : ça clignotte !
Apres avoir acheté sur eBay une carte de dev à la base orientée ancienne génération AT90S2313 (AVRée de Elektor), et quelques ATTiny2313 ainsi que des ATMega8, j’ai enfin de quoi tester les AVR…
Le souci : la programmation… Heureusement qu’il me reste une tour avec une prise lpt. Via un ssh dessus et par AVRDUDE (faudra que je re-teste UISP) j’ai réussi à programmer mon premier 2313 pour faire clignoter une LED ! Magique ! (Merci la carte de dev PSoC avec sa mini breadboard qui m’a permis de me servir de cette breadboard pour programmer le 2313 en utilisant l’alimentation “stabilisée” de la carte). J’en ai profité, après quelques mauvaises manips, pour re-tester le port parallèle du PC, ça faisait longtemps et ça m’a rappelé quelques bons souvenirs : faire clignoter des LEDs branchées sur le port //, lire les changements d’états… le tout sous Ubuntu (quelques galères avec les IOPerm et la librairie io à inclure, qui ne se trouve pas dans asm mais dans sys sur mon Ubuntu).
Il me reste quand même pas mal de progrès à faire mais je pense que je vais pouvoir pas mal m’amuser avec la carte de dev (LEDS, boutons poussoir, LCD 2×16, baie d’extension…), le tiny2313 étant compatible pin à pin avec l’AT90S2313, ça permet d’utiliser la carte sans aucune modification matérielle.
L’inconvénient pour le moment est la nécessité de retirer le tiny2313 pour le replacer sur la carte de prog., de déplacer la tour pour pouvoir accéder au port parallèle puis de la replacer à chaque nouvelle programmation du micro… Ca risque de ne pas être drôle longtemps, d’où l’urgence “relative” de me fabriquer un USBtinyISP ou USBASP : après quelques recherches dans le fond de mes tiroirs j’ai trouvé pas mal de trucs utiles mais il me manque les résistances 68 ohms qui permettent à l’host de détecter la présence d’un périphérique USB.
To be continued soon.
written by Mathias
fév 14
Bon alors j’ai vraiment envie de me replonger dans l’électronique… Surtout que maintenant j’ai un peu de place et un peu de matos aussi.
Pour rattaquer, je suis en train de bidouiller un PSoC (CY8C29466) via un mini prog 3210 mais la suite PSoC designer ne fonctionne que sous Windows… Et pour le moment j’ai encore un peu de mal à le faire fonctionner comme je voudrais (allumage LED ok mais fonctionnement du CAN obscur…). L’autre micro qui m’attire en ce moment est l’ATMEL Attiny2313, sur lequel la gestion de l’USB low-speed peut être implémentée en soft : faut que je teste ça.
Sauf que pour programmer les ATtiny des softs sont dispos mais la plupart se basent sur la présence d’un port parallèle. D’où mon soucis actuel : sur mon macbook, je n’ai ni port parallèle (pour la prog) ni port série (utile pour débugger…) Je cherche donc un convertisseur USB Parallèle qui soit utilisable sous Mac OS/Linux comme un port parallèle.
Autant un grep CONFIG_USB_SERIAL sur le fichier de config de mon noyau me donne des pistes sur les adaptateurs USB - Série supportés, autant je ne sais pas d’où partir pour trouver des infos concernant un adaptateur USB - Parallele…
Pour le moment j’ai trouvé ça pour moins de 15euros chez ldlc et dont un utilisateur confirme le bon fonctionnement sous linux, les questions : d’une part c’est un adaptateur USB -> Centronics (j’aurais préféré parallèle DB25, faut que je regarde si c’est compatible auquel cas il suffirait d’utiliser une fichie Centronics sur le programmateur), et d’autre part, reste à voir si c’est utilisable pour autre chose qu’une imprimante… [Note, à priori le matos basé sur des chips Prolific a l’air bien supporté sous Linux]
Une autre solution serait la fabrication maison d’un adaptateur
(en utilisant le port parallèle d’un vieux PC pour la première programmation du chip utilisé sur le programmateur couplé à un bootloader pour mettre à jour le firmware… mais j’ai peur de ne jamais trouver le temps de bricoler ça)
En ce qui concerne les softs (j’avoue ne pas encore avoir pris le temps de regarder) :
- Kicad, Eagle ?
- Voir s’il existe un environnement de dev un peu graphique autour de AVR GCC
Les idées de réalisation :
- Interfacer un écran de Nokia 3210/3310 (j’en ai un dont quelques lignes sont mortes mais qui reste utilisable sur les autres
)
- Mettre en pratique l’utilisation de LED comme émetteur mais aussi récepteur (faut que je retrouve les docs là dessus, ça m’avait paru sympa)
- Si je trouve enfin un récepteur GPS pas trop cher et filaire, voir pour l’interfacer (cf détecteur de radar)
- …
Note : à regarder : Armadeus
written by Mathias
jan 31
En fouillant un peu sur mon PC (sous CentOS), je me suis rendu compte que certains fichier Flash* trainaient dans /tmp.
file /tmp/FlashwaEi9I
/tmp/FlashwaEi9I: Macromedia Flash Video
Un petit mplayer sur ce[s] fichier[s] et je me rends compte que ces fichiers contiennent les chansons que j’écoutais sur Deezer avant que Firefox ne plante…
Playing /tmp/Flashk91NXR.
libavformat file format detected.
Seek failed
=======================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 22050 Hz, 2 ch, s16le, 128.0 kbit/18.14% (ratio: 16000->88200)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
=======================================
D’où une bonne surprise pour moi qui voulais mettre un peu de musique sur mon lecteur mp3 pour les longues heures de trajet qui m’attendent… Le transfert de fichier sur ce lecteur [yampp7] n’étant, que je sache, possible qu’avec des fichiers mp3, merci ffmpeg. (Encore quelques petits soucis : les softs de transfert n’ont pas l’air de reconnaître les meta insérés par ffmpeg, d’où le nommage du fichier avec le nom de l’auteur… à investiguer)
#!/bin/sh
author=”Author”
album=”Album”
title=$1
cp /tmp/Flash* ./test.flv
if [ ! -d “$author” ];
then mkdir “$author”;
fi
if [ ! -d “$author”/”$album” ];
then mkdir “$author”/”$album”;
fi
#ffmpeg -i test.flv -vn -f mp3 -ac 2 -ab 128k -author “$author” -album “$album” -title “$title” “$author”/”$album”/”$title.mp3″
ffmpeg -i test.flv -vn -f mp3 -ac 2 -ab 128k -author “$author” -album “$album” -title “$title” “$author”/”$album”/”$author”–”$title.mp3″
rm test.flv
written by Mathias