Archive

Archive for the ‘hack’ Category

Leçon au plus près du bit : streamer audio sur ATtiny 15L

binary_wave

Vous connaissez Arduino? Non vraiment ?
Mais si, on en voit tout les jours sur hackaday. Des platines toutes faites avec un microcontrôleur AVR et quelques périphériques prêts à l’emploi.
La guerre dans cette gamme de micro contrôleurs a fait rage pendant des années entre Microchip et ATMEL. Après des débats passionnés entre les utilisateurs et des articles comparatifs provenant des fabricants, il semblerait bien qu’ ATMEL ait remporté une manche avec le phénomène Arduino.
Arduino, une(des) plateforme(s) peu onéreuse(s), rassemble une communauté qui partage code et connaissances.
Au niveau logiciel, tout a été fait pour faciliter le développement à l’aide de sktech, ajoutant une couche d’abstraction supplémentaire au code enfoui. Des librairies nombreuses ont aussi vu le jour. Ainsi, il est aisé de parler le SPI, d’utiliser un UART, d’accéder à un format de fichier FAT et même de jouer de la musique avec un Arduino. C’est bien tout ça, c’est sûr. Mais n’est-ce pas un peu dommage ?
Où est l’aspect éducatif et surtout didactique de la démarche ? Pire, il y a des cas où les limitations imposées par cette abstraction logicielle vous empêcheront de réaliser votre projet. Des cas où les tâches critiques rendront la notion de temps réel primordiale.
Aussi, le projet que je vous présente sera basé sur un ATtiny15L un tout petit microcontrôleur RISC 8 bits de chez ATMEL. On ne peut le programmer qu’en assembleur. Même pas en C crieront certains !! C’est pourtant la meilleure approche (et pour moi la plus ludique) de faire connaissance avec l’univers passionnant des micrôcontroleurs et de parfaire sa culture numérique.
Lire la suite…

Publicités
Catégories :electronique, hack Étiquettes : , , , , , ,

Linux is everywhere_PQI AIRCard, partie IV: Flash it !!!

mars 18, 2013 11 commentaires

the_flash Ah, cela faisait bien longtemps que bidouiller de l’embarqué ne m’avait pas autant amener de plaisir.

De nos jours les plateformes ouvertes (cartes ACME , cartes FriendlyArm et bien d’autres…) sont beaucoup plus courantes qu’avant et c’est très bien. Pour autant, pénétrer dans le firmware d’un matériel à priori fermé (et faisant preuve manifeste de GPL violation) cela donne un charme supplémentaire.
Dans les chapitres I, II et III des trois posts précédents, nous avons planté le décor avec la découverte du firmware puis la mise en place d’une liaison série avec le matériel. La porte ouverte à des modifications plus profondes. Alors prêt à flasher votre pqi Air Card, suivez le guide. Lire la suite…

Linux is everywhere_PQI AIRCard, partie III: Les mains sous le capot

mars 6, 2013 3 commentaires

thompson-and-ritchieIl y a parfois des lettres recommandées qui me remplissent de joie. Surtout quand elles arrivent de Honk-Kong. Ca y est !!! la pqi Air Card commandée sur ebay est arrivée, joie joie !!
Donc faisant suite aux deux post précédent ici et , entrons maintenant dans l’étude et surtout la modification du matériel tant désiré. Juste avant de commencer, juste une petite réflexion que je me suis faite et en rapport avec l’image sur là gauche. Imaginez la réaction de (feu) Dennis Ritchie et Ken Thompson si 40 ans plus tôt ils avaient su que leur système serait porté sur un matériel de 2mm d’épaisseur, de 2 x3 cm et pesant 1g !!! Quand on voit la taille du PDP11 qui a vu naître le système UNIX c’est tout simplement hallucinant. Et pourtant c’est bien la même logique de programmation qui tourne dessus. Preuve si il reste encore à le démontrer de l’extraordinaire vision des deux programmeurs et de la supériorité des systèmes Unix (dont Linux). Mais trêve de bavardages, c’est parti pour une séquence d’embarqué inédit. Lire la suite…

Catégories :hack, Linux Étiquettes : , , , ,

Linux is everywhere_PQI AIRCard, partie II: soeur Anne, ne vois-tu rien venir ?

février 14, 2013 3 commentaires

easy-way   Je fais suite au post précédent en continuant les investigations sur la pqi Air Card. Je n’ai pas encore reçu le matériel mais disons que je prends de l’avance. Comme précédemment énoncé, il y a déjà quelques trucs à faire et à tester en jouant uniquement avec avec le BusyBox livré d’origine dans la carte. Cependant, le vrai hack c’est de pouvoir compiler ses propres binaires.

L’obtention de toolchain pour Arm est quelque chose de relativement aisé. Là où les choses se compliquent c’est quand on veut utiliser les librairies partagées installées d’origine sur la plateforme.

Pour s’affranchir de cette contrainte, on peut bien sûr compiler en statique son programme; mais en procédant ainsi, on aura tôt fait de saturer les capacités de stockages (réduites en embarqué).

On peut aussi reconstruire complètement le système. Mais là il faut  repartir de 0 et ce n’est pas la meilleure des options pour votre productivité.

Donc le mieux pour aller droit au but, c’est de disposer de la même toolchain que celle utilisée par les concepteurs du firmware. C’est le « Easy Way » et on va voir qu’ en la matière (et je pense sans le vouloir) pqi nous facilite bien les choses. Lire la suite…

Catégories :hack, Linux Étiquettes : ,

Linux is everywhere_PQI AIRCard ,partie I: découverte

février 11, 2013 3 commentaires

pqi-air-cardDans la série « Linux is Everywhere » je vous présente aujourd’hui une SdCard Wifi de chez pqi: la AIR Card

Le projet initial qui m’a fait m’intéresser à une carte SD Wifi a pour but la visibilité par le réseau d’un équipement complètement fermé. La seule possibilité d’ interagir avec l’équipement en question et de passer par un slot SD-Card disponible. Parmi les applications les plus courantes, on trouvera l’ accessibilité à des appareils photos numériques. C’est d’ailleurs la seule fonction assurée nativement par le produit présenté. Mais en cherchant bien, je suis sûr que vous trouverez des projets vraiment excitants et dignes de figurer dans le « Wall of Fame » de Hackaday.   Pour ma part, c’est en rapport avec du matériel avionique. Mais qu’importe, là n’est pas le sujet du post.

Je vous propose donc de plonger au coeur du firmware.
Lire la suite…

Catégories :hack, Linux Étiquettes : , , ,

Un NSLU2 à moustache

décembre 21, 2011 Laisser un commentaire

NSLU2 équipé de son dongle Wifi

J’utilisais jadis un nslu2 reflashé avec une Debian pour mon Nas.
Depuis, l’adoption d’un Ts212 avait laissé ce matériel disponible pour autre chose.
Parallèlement, j’ai une vieille imprimante HP5850 initialement réseau (et wifi) mais qui depuis d’hasardeuses modifications de firmware pour lui faire adopter le cryptage WPA refusait tout simplement toutes connectique réseau; seul l’usb me permettait encore de l’utiliser sur mon poste principal.
L’idée était donc d’utiliser le NSLU2 adjoint d’un adaptateur wifi usb comme serveur d’impression.
Tout n’est pas si simple quand il s’agit de dongle Wifi surtout pour du matériel embarqué mais avec la magie d’ OpenWrt et du matériel correctement choisi tout est réalisable … Voyons cela en détail. Lire la suite…

Catégories :hack, Linux Étiquettes : , ,

Papa !!! la télé elle a des poils qui poussent et puis elle parle toute seule.

décembre 17, 2011 Laisser un commentaire

Eh oui mon petit ça s’appelle la convergence, et puis tu ferais mieux de t’y habituer car c’est que le début …
J’avais mis ça dans mon énorme liste TODO depuis que j’avais remarqué que le firmware de ma télé reposait en partie sur linux.De plus, la télé comportait une connectique réseau ce qui laissait envisager pas mal de truc. Un jour je suis tombé la-dessus.
Bon je cite:
« jointSPACE is an Open Source project that will allow every user/supplier to develop applications for Philips TV displays.
jointSPACE is based on the SPACE architecture which was developped by Philips to ease internal development.
At a certain point of time, Philips decided to open its architecture to allow everyone developing code for the TV target.
jointSPACE adresses this by opening and extending the current TV architecture:
jointSPACE proposes a single platform to develop applications (any Linux PC or device capable of running Linux/DirectFB technologies)
jointSPACE publishes the essential TV APIs used in the SPACE architecture
jointSPACE provides a portable prototyping software that includes and illustrate the essential of the SPACE architecture
jointSPACE will extend the TV architecture to allow:
executing TV applications on a remote system, rendering and being controlled on the TV
executing application on a remote system, controlling the TV APIs remotely.
jointSPACE will continuously provide new technologies/libraries to ease and improve the development of new applications
jointSPACE will extend the TV API to allow controlling more TV functionalities. »

Résumons les choses, à l’instar du monde de la téléphonie, Philips c’est rendu compte qu’une architecture ouverte c’était pas mal pour créer une dynamique innovante. Pour cela outre le noyau linux qu’ils ont adopté pour le firmware, le reste a été basé sur:
DirectFB une API pour développement sur frameBuffer
SawMan un window manager tournant sur DirectFb
Voodoo une couche réseau permettant aux applications DirectFb de dialoguer facilement entre elles.
FusionDale reposant sur l’API Fusion IPC.
Sur le site de JointSpace, on trouve outre la documentation une section Download qui comporte les SDK pour:
-Cygwin
-MacOs
-Linux
-NitendoDs
-Iphone
-Android
Pas mal non ? Du reste, on dispose aussi des sources du SDK que l’on pourra recompiler (voir modifier et recompiler) pour la plateforme de notre choix.
Il y a aussi des exemples d’applications. Et c’est là que ça se corse:
Des jeux ou des émulateurs sont disponibles. On ne trouve cependant que les binaires sans les sources… Inutile de préciser que ces binaires sont de toutes façon d’horribles exe…
Je me penche sur les exemples fournis avec les sources. Eh ben c’est pas mieux …
A part une petite anim de PacMan, impossible de compiler. Le code n’est tout simplement pas portable.
D’ailleurs voila ce que l’on peut lire dans certains README: « Cygwin version only for the moment. »
NON MAIS STOP, coup de gueule. Voila qu’une technologie à la base faite pour (je cite à nouveau):
« any Linux PC or device capable of running Linux/DirectFB technologies) » se retrouve uniquement en démo sur un moisi OS. Que c’est laid, quelle ingratitude tout de même…
Ben voyons j’ai qu’à mettre un Windows sur Vmware|qemu|Virtualbox puis installler cygwin dessus pour faire tourner les démos… c’est ridicule, vraiment. Honte à toi développeur je te souhaite un cancer du *** et une amputation des doigts pour que jamais tu ne puisses te gratter.
Parmi les applications disponibles, une m’intéressait plus particulièrement: il s’agit d’une télécommande.
On peut s’interroger sur l’utilité de cette application. En effet, il est quand même plus pratique de prendre directement la télécommande de la télé que d’aller chercher son ordinateur portable. Cependant cela peut être très utile quand comme moi vous avez votre bureau juste à côté du salon et que vos enfants mettent le son trop fort. Inutile de se déplacer / crier juste un click.
De même en explorant l’api de jointSpace j’envisageais d’autres possibilités. Par exemple afficher un message par dessus l’écran du téléviseur (les devoirs sont faits?…).
Il y aussi la Nettv, un service en ligne sur la télé permettant de naviguer sur certains sites partenaires dont Youtube, Dailymotion, Allocine etc…
Pour cela on navigue avec la télécommande du téléviseur. Pour les champs de recherche, on utilise le multiptap de la télécommande (par ex, pour le ‘a’ on appui trois fois sur la touche 1). C’est quelque chose que l’on trouvait beaucoup sur les téléphones portables. A l’usage, c’est vraiment pas pratique.
Je décidais donc que ma télécommande virtuelle permettrait de rentrer directement du texte pour pouvoir « surfer » sur ma télé.
En cherchant un peu j’ai trouvé que philips avait mis en ligne sur l’android Market:
Philips MyRemote
La même chose existe pour iphone. Rien de semblable n’existant pour Linux, ce fut une fois de plus la méthode DIY.
De fil en aiguille je commençais à entrevoir différentes possibilités: si il était possible d’afficher du texte sur la télé pourquoi ne pas faire afficher des messages systèmes ? (mails reçus par ex).
Aussi je décidais d’architecturer mon application de la façon suivante:
Une librairie « displib » sera responsable de l’affichage de message sur la télé.
Une autre librairie la « remlib » sera responsable de l’envoie de commande distante sur le téléviseur.
Ces librairies écrites en C grâce au SDK jointSpace pourront être appelées par de simples petits programmes C afin d’être inclues dans des scripts. On pourra aussi utiliser ces libs dans un programme C++. Il suffira juste pour cela de rajouter un #define __cpp dans le corps du programme appelant.
Aussi, pour la télécommande virtuelle j’ai utilisé Qt.
Les sources et binaires sont disponibles ici: lrtv
Veuillez lire le README avant utilisation/compilation.
Sûr que le coding style n’est pas franchement au rendez-vous mais au moins l’application a le mérite d’exister. Les contributions seront les bienvenues.
Pour finir, une petite vidéo de démo :

Catégories :hack