h:D

Planet

  • Vendredi, Janvier 10, 2014 - 10:07
    OpenAlarm : Un système d'alarme libre

    Après de multiples recherches sur Internet, je m'avoue vaincu : pas moyen de trouver un système d'alarme libre suffisamment avancé et les systèmes propriétaires sont beaucoup trop chères, même d'occasion...

    Bien sûr, il reste les systèmes d'alarmes bas de gamme mais que valent t'ils vraiment face à des pros du vol qui connaissent bien les parades...

    J'ai donc décidé de développer mon propre système libre, les toutes premières briques ont été posées sur le wiki SystèmeDAlarmeLibre et dans cet article, je vais détailler mes choix.

    Cahier des charges

    • Multi-zones sans fil, hors de question de tirer des cables partout, il faudra donc prévoir des capteurs autonomes en énergie et capable de communiquer avec la base par radio
    • Système d'avertissement local sonore et lumineux ainsi qu'un envoi de SMS avec détail sur l'incident (zone, type d’évènement, horodatage)
    • Type de capteurs : Infra rouge (PIR), ouverture (reed switch), vibration, sonore, lumière, fumée, fuite d'eau et pourquoi pas la température et l'humidité
    • Communications sécurisées : Multi-bandes et il ne doit pas être possible de brouiller la bande de fréquences utilisée sans déclencher d'alerte, on ne doit pas pouvoir forger de faux messages de « tout va bien »
    • Alarmes techniques en cas de batterie faible des capteurs autonomes ou perte du signal d'un capteur
    • Watchdog : La centrale doit être capable de se sortir elle même d'un plantage inopiné
    • Autonomie électrique de la centrale : en cas de coupure d'alimentation, elle doit tenir suffisamment longtemps pour avoir le temps de lancer ces alertes
    • Les boitiers des capteurs et de la centrale devront être autant que possible réalisables grâce aux outils d'un fablab (impression 3d, découpe laser, etc...)

    Choix techniques

    Centrale

    La centrale devra donc gérer la communication avec les capteurs, être capable de déclencher des alertes en rapport avec l'incident reporté (effraction supposée : signal sonore et lumineux, envoi de SMS), gérer l'interface utilisateur par le biais d'un serveur web embarqué et d'un clavier déporté.

    Le coeur

    Le coeur du système sera un RaspberryPi, tout simplement car je connais bien cette carte, elle est peu onéreuse et ces capacités seront largement suffisantes pour ce qu'on va lui demander de faire...
    La faible consommation du RaspberryPi facilitera son alimentation en cas de perte de la tension du secteur.

    Raspberry_Pi_-_Model_A.jpg

    En terme de logiciel, Python sera employé et le système sera donc adaptable à toute carte ou PC...

    python.png

    La communication

    La communication avec les capteurs sera effectuée à l'aide d'un nRF905 (http://www.nordicsemi.com/eng/Products/Sub-1-GHz-RF/nRF905), un circuit intégré spécialisé ayant la particularité de pouvoir émettre au choix sur 3 bandes (433, 868 et 915MHz), d'avoir une très faible consommation et d'être très simple à mettre en oeuvre.

    Le module GSM pour l'envoi de SMS sera un SIM900.

    nrf905.jpg
    sim900.jpg

    Module capteurs

    Une des partie les plus critiques du système est la capture des événements par le biais de capteurs (infra-rouge, etc...), ces modules doivent être totalement autonome, alimenté par batterie, voici les parties communes :

    • La partie radio basé sur un nRF905
    • Le coeur : Un Avr (tinyAvr) d'Atmel se chargera de lire l'état du capteur, de communiquer avec la base, de vérifier l'état de la batterie
    • Des entrées / sorties pour y brancher le ou les capteurs
    • Une batterie

    L'autonomie étant critique, l'AVR pourra se mettre en veille et en sortir soit au bout d'un temps déterminé pour vérifier l'état du capteur et avertir la base que tout va bien (ou que tout va mal), ou il pourra également sortir de veille par le biais d'un changement d'état du capteur.

    Je pense faire une carte électronique générique pour tous les capteurs afin de gagner en coût et en facilité.

    La suite

    Dans un premier temps, je veux m'assurer de la bonne portée pratique des modules radios ainsi que de leur consommation car il s'agit DES parties critiques du système.

    Ayant d'autres projets sur le feu (dont certain qui trainent depuis bien trop longtemps), j'essaierai d'avancer sur OpenAlarm au mieux...En attendant, j'attends vos retours / avis / conseils / idées, etc...

    Un dépôt GitHub OpenAlarm à été ouvert oû je mettrai toutes les informations utiles au développement, le wiki sur GitHub sera aussi tenu à jour.

  • Lundi, Janvier 6, 2014 - 18:37
    Décodage d'un cadran à impulsions type S63

     S63gris

    Un téléphone de ce type, ça me fais rêver !
    Je passe encore de longues minutes ( pas des heures, faut pas exagérer..) à tourner le cadran en m’extasiant devant la mécanique du régulateur centrifuge, du codeur à rocher, de la simplicité du principe de numérotation décimale. Et je pense également à une poubelle que j'ai vue dans ma jeunesse; une armoire de central téléphonique électro-mécanique !!!! Imaginez, monté sur des panneaux, des centaines d’aiguilleurs électro-mécaniques à 10 positions, qui avancent à chaque impulsion. Des tonnes de ferraille qui aujourd'hui tiennent dans un seul composant de silicium... Je rêve, je vous dis!
    Bref..... On peux pas jeter un truc pareil ! Je vous propose de nous intéresser à la partie numérotation, pour en faire ce que vous voulez. A partir de Arduino, bien sûr!
    Voilà le schéma d'un poste S63 d'origine, complet. Nous allons nous intéresser uniquement à la partie cadran, le rond en haut et à gauche. Ce que le schéma montre mal, c'est que il y a 2 contacts indépendants. Un premier, avec des câbles bleu et blanc-bleu, n'est ouvert que lorsque le cadran est au repose. Il court-circuite micro et écouteur pour éviter entre autres des générer des bruits désagréables pour l'utilisateur lors de la rotation.

    Schéma Original S63Détail Cadran

    Le second, celui qui nous intéresse, en rouge et blanc-rouge, s'ouvre à chaque impulsion. Il y a 1 impulsion pour le 1 et 10 pour le 0. Chez nous. Dans d'autres pays, ça peux varier. Méfiez-vous des importations.
    "Et que peux-on en faire ? " me diriez-vous ! "Ce que bon vous semble, dans la limite de la décence" vous réponds-je.
    Par contre, je peux vous dire comment le faire; avec une Arduino, comme d'habitude, ou d'un AtTiny (mais il faut supprimer les commentaires bien sûr), car l'énorme avantage de ce truc, c'est de n'exiger qu'un seul pin de libre, contrairement à un clavier matriciel. En plus, c'est bien plus classe.
    Donc le programme;
    ------------------------------------------------------------------------------------------------------------------------------------------------------

    /* Décodage pour cadran à impulsion type S63
    Philippe Martorell
    le 6/01/2014
    */
    const int PinLecture = 2 ; // Entrée lecture impulsions
    const boolean Bavard = 1 ; // Génére les commentaires sur le port série
    const boolean Debug = 1 ; // Génére les mesures de temps
    /*
    Pour compiler avec un AtTiny,
    il suffit de mettre à "0" les deux constantes précédentes
    Pensez bien que l'envoi sur le port série prend du temps.
    C'est importatnt dans les mesures des impulsion.
    */
    boolean PlusDuneFois = 1 ; // pour éviter la répétition de commentaire
    unsigned long TempsImpulsionMin = 50 ;
    unsigned long TempsImpulsionMax = 90 ;
    unsigned long TempsInterImpulsionMin = 25 ;
    unsigned long TempsInterImpulsionMax = 50 ;
    unsigned long TempsInterNumero = 200 ;
    unsigned long rebonds = 2 ;
    unsigned long duree = 0;
    unsigned long temps = 0 ;
    int Numero = 0 ;
    
    void setup()
    {
     if (Debug || Bavard) // Si les deux à 0, on initialise pas
      {
       Serial.begin(115200);
       Serial.println ("Initialisation Serie") ;
      }
     pinMode(PinLecture , INPUT);
     digitalWrite(PinLecture , HIGH);
    }
    void loop()
    {
     Numero = 0 ;
     delay ( rebonds );
     while ( !digitalRead(PinLecture) )
      {
       if ( PlusDuneFois == 1 && Bavard == 1 )
       {
        Serial.println ("Attente") ;
        PlusDuneFois = 0 ;
       }
      }
     temps = millis() ;
     if (Debug == 1 )
     {
      debug();
     }
     PlusDuneFois = 1 ;
     delay ( rebonds );
     int Numero = 0 ;
     numerotation () ;
     delay ( rebonds );
    }
    
    void numerotation()
    {
     while (1) //Boucle infinie, on ne sort qu'avec les "return"
     {
      if ( Bavard == 1 )
      {
       Serial.println ("Entree impulsion") ;
      }
      while ( digitalRead(PinLecture) )
      {
       duree = millis() - temps ;
       if ( duree > TempsImpulsionMax )
       {
        if ( Bavard == 1 )
        {
         Serial.println ("Impulsion trop longue") ;
        }
        debug();
        return ;
       }
      }
      if (millis() - temps < TempsImpulsionMin )
      {
       if ( Bavard == 1 )
       {
        Serial.println ("Impulsion trop courte") ;
       }
       debug();
       return ;
      }
      delay ( rebonds );
      if ( Bavard == 1 )
      {
       Serial.println ("Sortie impulsion") ;
      }
      debug();
      Numero ++ ;
      if ( Bavard == 1 )
      {
       Serial.print ("Increment numero ; ") ;
       Serial.println (Numero) ;
      }
      temps = millis() ;
      delay ( rebonds );
      if ( Bavard == 1 )
      {
       Serial.println ("Entree inter-impulsion") ;
      }
      debug();
      while( !digitalRead(PinLecture) )
      {
       duree = millis() - temps ;
       if ( duree > TempsInterImpulsionMax )
       {
        if ( Bavard == 1 )
        {
         Serial.println ("Inter-impulsions trop longue; action") ;
        }
       debug();
      Action () ;
      return ;
       }
      }
     if ( Bavard == 1 )
     {
      Serial.println ("Sortie inter-impulsion") ;
     }
     if ( duree < TempsInterImpulsionMin )
     {
      if ( Bavard == 1 )
      {
       Serial.println ("Inter-impulsion trop courte") ;
      }
      debug();
      return ;
     }
     debug();
     temps = millis() ;
     delay ( rebonds );
     }
    }
    void debug ()
    {
    if (Debug == 1 )
     {
      Serial.print ("Lecture ; ") ;
      Serial.print (digitalRead(PinLecture)) ;
      Serial.print (" duree = ") ;
      Serial.println (millis() - temps) ;
     }
     delay(2) ; // petite tempo par principe
    }
    
    void Action ()
    {
    if ( Bavard == 1 )
     {
      Serial.print ("Action avec numero ; ") ;
      Serial.println (Numero) ;
     }
    // Placez ici l'action à faire avec la variable "Numéro"
    Numero = 0 ;
    }
    

    -------------------------------------------------------------------------------------------------------------------------------------------------------
    Bon, j'ai un peu honte, il traîne des inélégant "return..", mais je n'ai pas su comment m'en passer.

  • Mercredi, Janvier 1, 2014 - 17:34
    /tmp/thinktank sur Snowden, les juges et la gouvernance des services de renseignement

    Paris, le 31/12/2013

    Un juge fédéral américain a légalisé la surveillance de masse des réseaux téléphoniques par le gouvernement US. Quel sens donner à cela ?

    Juge et politiciens tentent de trouver un message, une solution médiatique au problème posé par la NSA et la surveillance globale. Le problème de la surveillance par la NSA reste entier, comme expliqué ci-dessous, mais les positions de ce juge s’inscrivent dans le contexte d’une lutte politique dont les juges eux-mêmes font partie.

    Devant le tollé qui frappe les Etats-Unis, la NSA et la communauté mondiale des services secrets, les Etats-Unis avaient besoin d’un support de poids pour contrebalancer d’autres jugements et l’opinion publique.

    La décision du juge Pauley contredit la décision de la cour de la semaine dernière (date?) à Washington DC. Pourquoi ces deux points de vue complètement opposés sur la surveillance de la NSA ?

    En fait, il y a un problème interne, une sorte de guerre interne à la NSA.

    “C’est la sécurité le problème” allez-vous dire, et nous sommes d’accord, mais ce n’est pas tout.

    Il y a beaucoup plus grave :

    La NSA est en échec dans sa mission.

    Trop de données, trop peu d’efficacité, caché par quelques succès mineurs (mais apparemment aucun sur le plan du terrorisme ) qui ont servi à justifier l’existence des programmes de surveillance gobale. Il y a un réel déséquilibre.

    L’échec, c’est tant de dollars investis et tant de compromis sur la vie privée faits pour des succès en réalité très limités.

    Et l’argument ultime c’est “Nous n’avons pas eu un autre 11 septembre”. La sécurité des personnes, tout le monde la veut. C’est l’argument massue parfait pour justifier quoi que ce soit. Mais c’est surtout pour les États-Unis un moyen d’avoir une domination mondiale sur l’information. Et c’est le vrai programme. C’est un outil politique au niveau mondial. Vous ne pouvez pas dire dans les médias que ce programme a des buts de renseignement, même si tout le monde le sait. Cela causerait trop de dégâts, notamment pour l’ego de la classe dirigeante nord-américaine. La vérité est choquante et les médias sont là pour la «médiatiser» au public , pour la rendre digestible quitte à l’occulter ou à la décolorer.

    Aux Etats-Unis, la NSA est incapable de se réformer de l’intérieur en raison de cette dualité : d’un côté le discours sur la protection de la patrie, de l’autre la réalité de la domination mondiale de l’information pour des objectifs de leadership politque et économique.

    Sinon , Snowden aurait pu utiliser un processus interne de la NSA pour résoudre le déséquilibre et ne pas devenir un “whistleblower”. C’est qu’il a lui même dit.

    Juge et politiciens tentent de trouver un message, une solution de communication. Mais le problème sous-jacent à la NSA et à la communauté du renseignement demeure. Derrière ce qui est vendu au public, les programmes de surveillance ne sont justifiés que si vous souhaitez conserver un déséquilibres des forces dans la conduite des relations internationales, pas si votre objectif est de détruire le terrorisme. Rappelez-vous également que les programmes espions instrumentalisent le terrorisme. Depuis le début de 20e siècle les agences de renseignement ont utilisé les terroristes au moins pour organiser les changements de nation et les actions.

    Certains juges ( Richard Leon ) pensent aux fondamentaux, comme Benjamin Franklin qui a dit :

    “Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety.

    Quiconque sacrifie sa liberté pour plus de sécurité ne mérite ni l’un ni l’autre.

    D’autres juges ( William H. Pauley III ) sont axés sur la dimension opérationnelle et veulent justifier ce qui est utilisé. Ils ont besoin de trouver une solution qui autorise le maintien des programmes de surveillance être trop contraire à la constitution.

    Ces juges argumentent sur ​​le sens des données. La nature du contenu des conversations espionnées et de leurs métadonnées -ie. “Qui appelle Qui”-, a beaucoup évoluée depuis que la première réglementation sur l’interception a été introduite :

    Les métadonnées contiennent plus de données (localisation, type de communication ) et peuvent être exploitées et explorées de façon automatisée.

    Les métadonnées suffisent pour vous classer politiquement.

    Les métadonnées sont suffisantes pour savoir si vous êtes conservateur ou libéral ou à la marge, stable ou instable, etc…

    Et cela peut être fait au niveau international avec une fiche pour chaque individu connecté numériquement.

    Selon le sens donné à un mot, vous obtenez une vision très différente des usages et des décisions des juges. C’est simple à manipuler et de faire avancer votre agenda caché. Qui dans le grand public connaissait ces métadonnées il y a quelques semaines ou quelques mois? Combien de gens ne savent toujours pas et peuvent être manipulés en disant “c’est sans danger” ?

    Le juge Pauley a déclaré que «Le droit de ne pas être sujet à des persquisitions et des saisies est fondamental mais pas absolu.” Que cela signifie-t’il ? Quelles sont les limites du droit à la vie privée ?

    En effet , le problème fondamental est un paradoxe des démocraties modernes qui tentent de tenir la société soudée. Elles essaient d’utiliser l’intelligence pour atteindre leur objectif : se maintenir au contrôle. Parfois : l’objectif est d’essayer de maintenir l’illusion, mais c’est seulement en cas d’échec.

    Et il n’y a pas que les Etats-Unis : tous les pays modernes sont confrontées au même problème.

    Certes, il y a de vrais méchants : ils existent, ils ne sont pas sages, certaines personnes les combattent.

    Une autre partie se penche sur les inégalités.

    C’est comme de l’eau et des barrages.

    Soit vous construisez un écosystème global égalitaire.

    Soit vous construisez des murs plus solides.

    Les murs d’aujourd’hui sont les programme de la NSA et les drones aux yeux des politiciens.

    Demain ce sera probablement quelque chose d’autre.

    C’est là que la pression du public et d’autres pays partenaires ont à jouer dans la balance équilibrer et rétablir l’équilibre.

    Lorsque le juge Pauley dit “Le droit de ne pas subir des perquisitions et des saisies est fondamental mais pas absolu”, c’est vrai : si vous êtes soupçonné d’un assassinat par exemple, vous pouvez être recherché, il peut y avoir des saisies.

    Il se réfère à cela pour justifier la surveillance de masse, mais c’est en omettant l’intention de la constitution et de la loi.

    La Constitution des États-Unis dit que le citoyen doit être libre de “perquisitions et saisies non motivées” :

    • Le quatrième amendement de la Constitution américaine stipule:

    Le droit des citoyens d’être garantis dans leur personne, leur domicile, leurs papiers et effets, contre les perquisitions et saisies non motivées ne sera pas violé, et aucun mandat ne sera délivré, si ce n’est sur présomption sérieuse, corroborée par serment ou déclaration, ni sans que le mandat décrive particulièrement le lieu à perquisitionner et les personnes ou les choses à saisir.

    La surveillance de masse est aléatoire, permanente, elle mène recherches et captures de communication globales. Et c’est le cas avec la surveillance qu’exercent la NSA et les agences de renseignement. C’est mondial, arbitraire, et c’est pourquoi on l’appelle surveillance de masse.

    Le concept de domicile est maintenant étendu : votre ordinateur est votre maison. Il contient votre courrier, votre journal intime, vos photos. Il se trouve maintenant non seulement dans votre ordinateur, mais l’ordinateur familial, désormais souvent distribué à travers le pays ou le monde. Donc la notion de «domicile» s’applique ici à l’échelle mondiale et sa protection doit aussi être globale.

    Analyse /tmp/think/tank

    Au niveau mondial / gouvernemental

    • Ce n’est que le début d’une nouvelle intensité de la critique envers les agences de renseignement surveillance mondiale de la masse. Elle ne va cesser de grandir.
    • Le niveau d’impunité des États en matière de surveillance de masse incontrôlée va diminuer. Tout comme le niveau de corruption.
    • Le public va être de plus en plus conscient que les techniques utilisées pour la surveillance de masse sont les mêmes que celles utilisés par les organisations criminelles. Il va se protéger activement contre le vol en ligne et de l’abus d’identité de manière à bloqur à la fois la surveillance de masse et la criminalité en ligne.
    • Le public, la société civile et les législateurs vont augmenter les contrôles sur la surveillance et le renseignement pour améliorer la démocratie, même face à une résistance gouvernementale et administrative importante.
    • Les États-nations vont continuer à investir massivement dans la technologie de surveillance jusqu’à ce que des contrecoups publics massifs en terme de coûts et de manque de preuves de ROI se fassent sentir : retour sur investissement faible / investissements massifs.
    • La véritable amélioration globale ne viendra pas de ce domaine sociétal de la surveillance de masse, mais de la création positive de valeur et de partage au niveau mondial.
    • La surveillance de masse va accroître l’inertie des gouvernements qui investissent en eux et en fin de compte les ralentir causant un désavantage organique et stratégique.
    • Le nombre d’interceptions légales mandatées par des juges va probablement se développer de façon linéaire avec la croissance de l’adoption technologique par le grand public. Les parlements utiliseront ces indices afin de surveiller les activités d’interception policières.
    • Le contrôle parlementaire des services de renseignement et le programme de surveillance va augmenter, souvent avec de nouveaux outils pour le faire.
    • Le retour sur investissement mis en regard de ​​la surveillance de masse sera calculé au fil du temps et publié dans les médias régulièrement pour montrer la bonne gouvernance et de la responsabilité des agences de renseignement. Les gouvernements et les administrations à défaut de le faire seront montrés du doigts à l’échelle internationale pour leur manque de gouvernance.
    • Peu de gouvernements seront en mesure d’utiliser la surveillance de masse pour le leadership mondial, les autres vont statistiquement tomber du côtés des perdants plutôt que de faire partie des leaders stratégiques, malgré d’énormes investissements. Certains gouvernements vont utiliser ces programmes pour ralentir la chute de leur nation, en n’ayant pas suffisamment confiance pour utiliser la création et la production d’inverser la tendance.
    • De grands pays (ie. Chine, Brésil , Inde, Russie, USA, Australie) pourraient être tentés de commencer à investir ou d’investir davantage dans la surveillance, mais le feront de manière plus équilibrée après analyse de l’impact de Wikileaks et des révélations d’Edward Snowden. L’effet d’attraction de “ce que peut faire la NSA” sera compensée par les coûts extravagants et les apparentes inefficacités de tels programmes.
    • Les gouvernements, souvent plus petits , avec une orientation positive et créative plutôt qu’une polarisation tournée vers la défense peuvent bénéficier d’une forme plus agile, plus légère de démocratie, avec des budgets plus équilibrés. Cette orientation bénéficiera de dispositifs de surveillance de masse moindres ou inexistants, mais pas seulement.

    Niveau individuel / niveau local

    • Le grand public va devenir globalement plus conscient, même si seule une fraction de la population va prendre des mesures pour défendre les droits du grand public et la vie privée.
    • La protection de la vie privée va s’améliorer de façon spectaculaire, souvent grâce à l’utilisation généralisée de la cryptographie dans les produits de consommation et les applications grand-public.
    • La confidentialité va gagner en valeur aux yeux par les consommateurs, qui comprendront qu’elle les protège à la fois contre les criminels en ligne et la surveillance de masse incontrôlée des gouvernements
    • Les nouvelles technologies de protection seront fournis par des groupes auto-organisés, le plus souvent par le mouvement des logiciels libres et des cercles de hackers. Elles seront massivement adoptés dans de nouveaux appareils et d’applications de communication à venir apportés par les start-ups et de l’organisation du logiciel libre à but non lucratif.
    • Les société d’édition de logiciels mettront plus de temps à fournir des solutions protégeant la vie privée des utilisateurs mais comprendront progressivement que ces caractéristiques font partie des éléments de sécurité désormais nécessaires et verront le potentiel de croissance sur le marché de la sécurité individuelle.
    • Les sociétés utiliseront de plus en plus les mêmes techniques protection que les individus et observeront les impacts sur ​​leurs propres processus de sécurité. Certains impacts seront positifs comme une meilleure protection de la propriété intellectuelle. Certains impacts nécessiteront le déploiement de nouvelles mesures comme l’utilisation généralisé de la cryptographie (ex: SSL / TLS) dans les techniques de Data Loss Prevention (Prévention de Perte de Données) , Intrusion Detection System ( Système de détection d’intrusion) et Intrusion prevention system (Système de prévention d’intrusion).
    • Les opérateurs de Télécommunication et Mobile devront faire preuve de leur investissement dans la protection contre la surveillance de masse incontrôlée et demanderont un meilleur contrôle et une ligne de conduite plus claire des gouvernements et de l’administration.
    • La prise de conscience générale contre l’insécurité de l’information par le grand public aura des impacts positifs considérables contre les activités criminelles en ligne, génératrice de bénéfices bien plus importants que la diminution de l’efficacité de la surveillance de masse.

    Pour plus d’informations , venez voir la conférences / tmp / lab le samedi 18 janvier 2014 au Médiathèque Aragon à Choisy -le-Roi.

    Version anglaise

  • Mardi, Décembre 31, 2013 - 20:01
    Poor coverage of NSA tech affair shows lame skills of high profile french newspapers

    It is very interesting to see how poor the coverage of NSA tech affair displays the lame skills of high profile french newspapers such as LeMonde and L’Express. It is very telling to see the kind of error these publication do. A few examples:

    Le Monde

    … récupérer les rapports d’erreur envoyés par **l’opérateur de système** Windows aux ingénieurs de Microsoft …

    In this case, poor translation of Operating System into System Operator shows that the journalist at Le Monde who wrote this are totally foreign to the technology world. It’s not that Le Monde is devoid of good technology skills in its journalist crew, as for example Jean Marc Manach from Le Monde Blog displays excellent track record in the tech world. So why these obvious mistakes?

    For l’Express

    dans le cadre de la surveillance de l’opérateur belge Belgacom, lors de révélations datant du mois de septembre. Le quotidien belge Standaard expliquait alors que l’opérateur avait décelé une intrusion “sophistiquée” au sein de sa filiale BCIS, fournisseur en gros de lignes téléphoniques

    There, it’s pure bad journalism practice where journalism skills seem low: low-details and they didn’t even spell right the hacked Belgacom’s subsidiary right as BCIS instead of BICS.

    We can hope that these publication upgrade their level, but one cannot expect articles to be good if the staff does not have a taste for these subjects. And it seems to have been the case for a long time.

    Moreover, one can even question the low interest and activity of these high profile french newspapers in regard with Snowden and NSA affair. How many articles published in french about this? This story is one of the most historic and important disclosure since Wikileaks and french newspaper don’t display the same kind of interest or professionalism as Washington Post, The Guardian or Der Spiegel do.

    These publication will probably have to justify to their readership their true independence in front of conflictual and non-consensual subjects.

  • Lundi, Décembre 30, 2013 - 10:03
    Une Borne d'Arcade maison, Fin

    Suite de l'étude précédente :

    L'heure des bilans :

    Après quasi deux ans de travaux, je vais maintenant en terminer avec cette série de comptes rendu, en faisant quelques bilans…
    Pour la petite histoire, suite à la fabrication des joysticks, j'ai passé deux mois à mettre au point la partie informatique (Août/Sept 2011), puis à imaginer et dessiner le meuble tout en m'occupant de la partie électronique, pour être prêt à commencer l'usinage du meuble (Janvier 2012).
    Quelques temps plus tard (Mars 2012), je reprenais les travaux dans une suite ininterrompue jusqu'à Mai 2013.
    Malgré le fait que l'espace de mon salon demeura un sacré chantier durant cette période, et que la progression au jour le jour fût très longue, je n'ai pas vu le temps passer et c'est avec satisfaction que je retrouve l'usufruit du salon, avec ce nouveau meuble qui en impose par sa prestance.

    Bilan outillage :

    Voici une liste non exhaustive de l'essentiel des outils ayants servis :

    dsc08900.jpg

    • Pour découper

    Des scies de plusieurs types, (circulaire, sauteuse, égoïne, à onglet et sa boite à coupe, à métaux), mais aussi cutter.

    • Pour maintenir

    Différents types de serres joints.
    Nous avons ici du premier prix en rouge, de la marque distributeur (Dexter = Leroy Merlin), et la marque Wolfcraft.
    dsc08903.jpg
    Les deux premier prix. je les ai depuis un bail. et ces derniers travaux les ont achevés ! Tordus et désaxés, ils présentent un jeu trop important et se desserrent tout seul.
    Les deux Dexter (8€ les 2), je les ai achetés durant la construction de la borne, et je peux vous dire que même si au maniement on les sent plus fiable que les autres, bah c'est de la merde quand même ! En effet, au fil des serrages, un des deux à vu son filetage se désagréger dans un crissement de métal broyé... mais peut-être que je suis un gros bourrin ? hum... nan !
    Quant au Wolfcraft (15€), un très bon matos ! Robuste, très bonne prise et maintient puissant, il ne bouge pas d'un poil et se met en place sans se bouziller les mains.

    dsc08904.jpg

    • Pour mesurer et tracer

    Équerre de menuisier, rapporteur d'angle, réglet et grande règle suffisent à se débrouiller en plus d'un simple crayon de bois.
    Pour écrire sur le plastique, il faudra un feutre fin indélébile.

    dsc08901.jpg

    • Pour percer

    Bah une perceuse…
    Mais surtout des forêts à bois et métal de qualités.

    • Pour limer et poncer

    dsc08902.jpg
    Deux râpes à bois et deux limes à métal (une plate et une arrondie), du papier de verre (silex) de trois grosseurs différentes, du plus gros au plus fin, suffisant pour le bois et du papier à poncer pour carrosserie (métal) de 400, 600 et 800 pour la laque.
    Une ponceuse à bande est un atout très utile pour gagner du temps, mais il faut s'assurer de bien maitriser l'outil car la matière disparaît très vite sous son passage !

    • Pour peindre

    dsc08899.jpg
    Quelques pinceaux bien sûr, mais surtout un pistolet à peinture basse pression et quelques bâches plastique pour protéger un minimum l'environnement de travail.
    La laque restant une technique de peinture très longue, cet outil s'avère bien pratique et permet de faire «rapidement» un travail assez propre.

    • Voila, il n'en faut pas pour cher en outils, et il ne faut pas hésiter à prendre du bon matériel, certes plus onéreux, mais qui durera toute la vie en servant à d'autres bricolages. Sinon il faudra racheter de la merde et au final se rendre compte qu'on aurait finit par payer le produit haut de gamme... sauf qu'on ne l'aura pas entre les mains !

    Ça ne sera jamais l'outil qui fera de vous un bon ouvrier, mais il y contribuera. Par contre, un mauvais outil aura tendance à empirer vos défauts…
    Enfin, un bon outil est un outil avec lequel on est à l'aise et grâce auquel on pourra faire mieux en prenant soins de s'appliquer.

    Bilan de compétences :

    • Sur cet ouvrage, j'aurais vraiment touché pas mal de domaines très différents, et au passage appris un tas de trucs !

    - L'informatique, avec la mise en place l'un système automatique GNU/Linux + AdvanceMame/Menu, entièrement géré aux joystick.
    - L'électronique + l'informatique, en redécouvrant le fonctionnement des écrans à tube cathodique et la manière de les interfacer à un ordinateur.
    - L'électronique, avec la fabrication des joysticks et aussi du circuit de protection de l'écran TV.
    - La soudure et le ferraillage, en fabriquant le système de rotation de l'écran.
    - La menuiserie, pour le meuble…
    - Le dessin vectoriel, pour les plans et les design de décorations.
    - La CAO pour les cartes l'électronique.
    - L'ingénierie… Même si certaines choses ont été faites en allant, sans trop savoir en détail comment m'y prendre, j'aurais tout de même pas mal cogitté le sujet…

    Bilan Logiciel :

    • Excepté l'émulateur AdvanceMame, la borne a été conçue et fonctionne grâce à des logiciels libres !

    À partir de mon PC sous Ubutu 10.04LTS,
    - Inkscape et Gimp, pour les plans et les design de décorations.
    - Kicad pour la CAO électronique.
    Les comptes rendu rédigés et publiés avec :
    - Dotclear, que vous lisez maintenant.
    - Gimp pour la retouche photos.
    - Cinellera et ffmpeg2theora, pour les vidéos.
    - Scribus, pour un document de résumé à usage privé.

    Les Regrets :

    • La partie basse aurait pu être mieux conçue

    En effet, placer des petites roulettes et encadrer la borne d'un socle gris pour compenser en stabilité, c'est finalement une bidouille pas pratique du tout, un défaut de conception influencé par mon idée tenace à vouloir utiliser l'intérieur de la borne comme d'un placard.
    Obnubilé par le gain de place intérieur, j'ai perdu de vue la possibilité de faire reposer la borne sur un simple cadre rigide, muni de grosse roulettes à l'arrière.

    • Le sens de rotation de l'écran est inversé !!

    Bêtement j'avais réglé AdvanceMame pour tourner sur la droite et pas compris qu'on pouvait choisir le sens en changeant le réglage…
    Persuadé donc qu'il faille me conformer à cela, j'ai bien fait attention à fixer l'armature métallique au rond rotatif de manière à tourner à droite, ce qui dans le fond n'est pas un problème me direz-vous puisqu'il suffit d'un réglage logiciel…
    Oui, mais nan ! Car c'est fichu si on veut utiliser un vrai jeu au format Jamma, car la quasi totalité des titres verticaux tournent à gauche !
    Même problème avec le jeu Ikaruga sur GameCube qui dispose du mode de jeu vertical, le réglage ne tourne l'image qu'à gauche !
    Il existe une bidouille pour retourner l'image, mais il faut alors intervenir sur le téléviseur, en cas d'erreur c'est assez dangereux pour l'intégrité du matériel, donc je m'abstiendrais.

    • La borne est plus haute que prévu

    J'ai foiré quelque chose en découpant la structure de base, me souviens pu bien quoi et du coup, la hauteur du panel donne 68 cm… au lieu de 66 cm sur l'Astro City originale, élevant de fait la hauteur totale du meuble de deux centimètres.

    • Le plexis du chapeau est raté

    dsc09204.jpg
    La découpe des trous pour laisser sortir le son des hauts parleur aurait-dû suivre le design de l'artwork que j'ai dessiné et placé derrière.
    Pourtant encore une fois, je ne me souviens plus comment cela a pu se produire, mais au final j'ai fait une découpe droite, on le constate bien en se demandant pourquoi les obliques grises et roses sont coupées dans leur longueur.
    De plus en bas à droite, j'ai dérapé avec le cutter, faisant une profonde rayure.

    Remerciements :

    • Au départ je m'étais lancé seul dans l'aventure, mais on réalise finalement qu'on n'est jamais seul sur internet, que les contributions au projet se font indirectement et finissent parfois par nous rattraper, lorsque des contributeurs ont eux même vent de l'avancée des travaux, pour fermer la boucle.

    Je remercie donc chaleureusement et dans le désordre toutes les contributions plus ou moins directes :
    - Paul Qureshi aka MoJo, programmeur de l'électronique du Joystick USB.
    - Andrea Mazzoleni, développeur d'AdvanceMame, lui même basé su Mame.
    - Calamity et son acolyte par le patch de Linux en 15kHz.
    - La communauté Gamoover, et tout particulièrement Aganyte pour les photo de sa New AstroCity de très bonne qualité et Max pour le tuto AdvanceMame qui fut une bonne base de départ.
    - Bien entendu, le projet Debian dans son ensemble et la communauté du libre !
    - Mon père pour son aide et ses précieux conseils dans la mise en œuvre.
    - Éric pour le prêt du pistolet à peinture !
    - Les différents soutiens et commentaires parlés, écrit, et podcastés, Seb, Pascal, Rain, Samaël, TomTom, Quentin, maethor, Nikos, Nicolas, Babosor, etc.
    - Spécial Thanks à mes gentils béta testeur : Kolocat et Kuri Hana !

    Et désolé à ceux que j'oublie ! ^^;

    Spécification de la borne :

    • Dimension et design inspiré de la célèbre CandyCab SEGA AstroCity

    - Hauteur : 146 cm.
    - Largeur : 75 cm.
    - Profondeur : 91 cm.
    - Meuble démontable.
    - Panel amovible pour passer aux portes et ascenseurs.
    - Structure sur roulette, sécurisée sur un socle.
    - Poids total = 90 kg.

    Structure de base (en pin/sapin) = 26 kg.
    Montage rotatif, écran/armature/rond = 43 kg. (L'écran plat pèse 38 kg)
    Capot = 5,5 kg.
    Control Panel = 3 kg.
    Plaquage extérieur = 9 kg.
    Étagère intérieure = 3 kg.

    • Téléviseur

    Sony Trinitron 29 pouces à dalle plate, KV19FX30 (chassis FE-2).
    Diagonale de l'image visible 68 cm.

    • Ordinateur

    - Processeur Intel P4 2Ghz avec 512 Mio de Ram.
    - Carte graphique ATI 9200.
    - Pas de disque dur, mais une Clé USB de 16 Go, avec dessus :

    GNU/Linux Debian 7 Wheezy et son noyau patché 15kHz.
    AdvanceMenu Version 2.6
    AdvanceMame Version 1.2

    • Consommation électrique

    Totale = 175 Watts.

    Écran = 75 Watts.
    Lumière = 16 Watts.
    Ordinateur = 64 à 85 Watts.

    Prix à titre indicatif :

    • Liste et prix de toute la matière première :

    - 2 x 20 équerres métalliques 40 x 20 mm à 4€70 = 9€40
    - 1 Sachet «vrac» 60 x 80 mm remplis de vis agglo de 40 mm = 1€49
    - 4 Pattes d'assemblages de 80 mm à 0€76 = 3€04
    - 3 Tablettes Pin noueux 200 x 60 x 1,8 cm à 12€50 = 37€50
    - 100 Tourillons de 60 mm = ???
    - 1 Panneaux de contre-plaqué 120 x 60 x 1,8 cm = 23€99 - promo 20% = 19€19
    - 2 Équerres larges à 1€31 = 2€62
    - 4 Équerres d'assemblage en acier galvanisé (70 x 70 x 55 mm ép.2,5 mm) à 2€04 = 8€16
    - 4 patins en Plastique à clouer diamètre 30 mm = 1€79
    - 1 Sachet (80 x 120 mm) de visserie en Vrac = 3€10
    - 8 Écrous 6 pans diamètre 10 mm = 2€25
    - 2 Panneaux de MDF 120 x 60 x 1,5 cm à 11€90 = 23€80
    - 6 Roulettes pivotantes blanches Diamètre 25mm à 2€ = 12€
    - 2 Tasseaux en pin à 4€90 = 9€80
    - 20 Taquets à clouer = 1€90
    - 2 Équerres fenêtre zing 220mm à 2€50 = 5€
    - 2 x 10 Boulons à tête fraisée (4 x 40 mm) à 2€75 = 5€50
    - 1 Sachet (80 x 120 mm) de visserie en Vrac = 3€65
    - 2 Charnières paumelle gauche (40 x 50 mm) = 2€
    - 2 Tasseaux brut (270 x 16 x 47 mm) à 5€90 = 11€80
    - 1 Plaque de Verre Synthétique (2,5 x 750 x 500 mm) = 10€95
    - 2 Équerres (100 x 100 x 90 x 3 mm) à 2€90 = 5€80
    - 2 x2 Charnières pour verre (13 x 40 mm) à 2€55 = 5€10
    - 1 Charnière à piano en laiton 32 x 600 mm = 2€65
    - 1 Tube en PVC de (2000 x diam 125 mm) = 13€20
    - 2 Tasseaux de (2000 x 10 x 15 mm) à 2€90 = 5€80
    - 2 Tasseaux de (2700 x 16 x 50 mm) à 5€90 = 11€80
    - 1 Tasseau de (2000 x 10 x 10 mm) à 2€90
    - 2 Fermoir (60 x 30 mm) à 3€10 = 6€20
    - 2 Charnières dégondables 30x40 = 1€79
    - Enduit de lissage spécial bois 1,25 kg = 15€70
    - Peinture blanc brillant acrylique 2,5 L = 39€90
    - Réglette fluo T8 (26mm) - 18 Watts - Blanc 840 - Culot G 13 - 1350 lumens = 7€45

    Total = 293€23,
    Sans l'écran, l'électronique, l'informatique, les joystick et boutons.
    Certaines pièces de bois sont de récupération, ainsi que la ferraille de l'armature de métal.

  • Dimanche, Décembre 29, 2013 - 14:40
    /tmp/think/tank on Snowden, Judges and intelligence governance

    A US federal judge has ruled that mass government surveillance of the phone network is legal. What does that mean?

    Judge and politics are trying to find a message, a communication solution to the NSA and surveillance problem. The NSA surveillance problem remains, as explained below, but these judge’s positions are in context of a political fight, judge are part of this.

    In front of the public outcry against USA and NSA and the global Intelligence Community, the USA needed someone of importance to counter-balance other judges arguments and public opinion.

    Judge Pauley’s ruling contradicts last week’s court ruling in Washington DC. Why do we have two completely opposite views on NSA surveillance?

    Well, there’s an internal problem at NSA, it’s like an internal war is going on at NSA.

    “Security is the problem” you will say is a problem, we agree, but not only this.

    Much more importantly:
    NSA is failing its job.

    Too much data, too few efficiency, hidden by some small successes (but appartenly none on the terrorist side) that were used to justify usefulness of the mass surveillance programs. There’s a real imbalance.

    The fail is that so much dollar invested and so much compromise of privacy for, in reality, not that much success.
    And the ultimate argument is “We didn’t have another 9/11″. Physical security is ultimate thing you cannot touch and that everybody wants. And it’s a good argument to justify anything. More importantly than this, it is a way for the US to get a global information dominance. And this is the real agenda. It is a political tool, at the global level. You cannot say in the media that you use intelligence for this agenda, even though everyone knows it. It’s too much damaging and too much linked with the ego of USA leading class. Truth is shocking, that’s why you need media to “mediate” it to the public, even sometime by obscuring it or fading it to make it digestible.

    In the USA, the NSA is not even able to reform itself from within due to this duality: discourse about homeland protection, reality of global information dominance for economical but also leadership goals.
    Otherwise, Snowden would have used NSA internal way to solve imbalance rather than become a whistleblower. He said it.

    Judge and politics are trying to find a message, a communication solution to it. But the underlying problem at NSA and in the Intelligence Community stays. There’s something being sold to the public, but below it, surveillance programs are only justified if you want to keep an unfair advantage at leading the world, not if you want to destroy terrorism. Remember also that terrorism is another tool for spy programs. Intelligence agencies have used terrorists since the beginning of 20th century at least to organize national changes and actions.

    Some judges (Richard Leon) are thinking about the fundamentals, like Benjamin Franklin said:
    “Who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety”

    Some others judges (William H. Pauley III) are more operations-focused and want to justify what is being used. And they need to find something which is not too much opposed to constitution yet enables the surveillance to go on.

    These judges argue about the sense of the data. Metadata is who calls who. The definition of both the contents of monitored conversations and Metadata (the information of who calls who), is now much different than it was when first regulation about interception was first introduced:
    Metadata has much more data (location, type of communication) and can be mined and explored in automated ways
    Metadata is sufficient to classify you politically
    Metadata is sufficient to know if you are conservative or liberal or fringe; stable or instable; etc…
    And it can be done at the international level, having a “color card” for every one of digital-related human being.

    So depending what meaning you put on a word, you get a very different view of uses, and of resulting ruling from judges. It’s very easy to manipulate this and navigate toward your hidden agenda. Who in the general public knew what Metadata was even a few weeks or month ago? How many people still don’t know and can be manipulated in saying “it’s harmless”?

    Judge Pauley said that “the right to be free from searches and seizures is fundamental, but not absolute.” What does it mean? How are privacy rights limited?
    Indeed, the fundamental problem is the catch-22 of modern democracies trying to hold the society together. And they try to use intelligence for this goal: to know that they are in control. (Sometime: to try to maintain illusion, but that’s only when they fail).
    Not only USA, all modern countries have the same problem.

    One part is real villains: they exist, they are not wise, some people fight them.

    Another part is addressing inequalities.
    It’s like water and dams.
    Either you build a worldwide ecosystem with more equality.
    Or you have to build better and stronger walls.
    Today’s walls are NSA surveillance program and Drones in the eyes of politicians.
    Tomorrow it may be something new.
    That’s where public pressure and other states’ peer pressure are here to balance and make equilibrium.

    When Judge Pauley says that “the right to be free from searches and seizures is fundamental, but not absolute.”, it’s true: if you’re suspected from a murder for example, you can be searched, there can be seizures.

    He refers to this to justify the mass surveillance, but it’s by omitting the intent of constitution and law.

    The US constitution says that citizen should be free from “arbitrary searches and seizures”:

    The Fourth Amendment to the U.S. Constitution reads:

    The right of the people to be secure in their persons, houses, papers, and effects, against unreasonable searches and seizures, shall not be violated, and no Warrants shall issue, but upon probable cause, supported by Oath or affirmation, and particularly describing the place to be searched, and the persons or things to be seized.

    Mass surveillance is random, permanent, global searches and capture of communication. And it is the case with NSA and intelligence agencies surveillance. It’s global, arbitrary, and that’s why it’s called mass surveillance.

    The concept of house is now extended: your computer is your house. It contains your letter, your private journal, your photos. It is now located not only in your computer, but your family computer, which are often distributed around the country or the world. Hence the notion of “house” here applies globally, and its protection needs also to be global.

    /tmp/thinktank analysis

    Global / Governmental level

    • It’s only the beginning of a new intensity of criticism toward Intelligence Agencies global mass surveillance. It’s going to grow.
    • The level of impunity of states in uncontrolled mass surveillance is going to decrease. Just like the level of corruption is going to decrease.
    • Public is going to be more and more aware that the techniques used by mass surveillance are the same as the one being used by criminal organization and will protect themselves actively against online theft and identity abused in ways that will block part of both mass surveillance and online criminality.
    • Public, civil and lawmaking is going to increase oversight and intelligence agencies controls to improve democracy, even in front of enormous governmental and administration resistance.
    • Nation states are going to continue investing massively in surveillance technology until massive public backlashes in term of costs and lack of ROI proofs (low Return on Investment over massive investments).
    • True global improvements do not come from this societal domain of mass surveillance but from positive creation of value and sharing at the global level.
    • Mass surveillance is going to add more inertia to the governments investing in them, ultimately slowing these down to an organic disadvantage and thus lose strategically.
    • Legal interception mandated by judge will probably develop linearly with the increase of technology adoption by general public. Parliament will use these kind of metrics in order to monitor the activities of police-related interception.
    • Parliamentary oversight of intelligence agencies and surveillance program will increase, often with new tools to do so.
    • Return on Investment over mass surveillance will be calculated over time and published in media regularly to show good governance and accountability of intelligence agencies. Government and administrations failing to do so will be singled out internationally for their lack of governance.
    • Few governments will be able to use mass surveillance for global leadership and will statistically fall into the strategical losing party rather than being part of the strategical leaders, despite huge investments. Some governments will use these programs to slow down the fall of their nation by not being confident enough to use creation and production to invert the tendency.
    • Big governments (China, Brazil, India, Russia, USA, Australia) may be tempted to start investing or invest more into surveillance but will do in more balanced ways after analyzing the impact of Wikileaks and Snowden revelations. The attraction effect of “what can NSA do” will be balanced by the enormous costs and the exposed inefficiencies of such.
    • Governments, often smaller ones, with positive and creative orientation rather than the defense orientation may benefit from lighter, more agile form of democracy, along with better balanced budgets. This orientation will benefit from lighter or absence of mass surveillance, but not from this alone.

    Individual level / Local level

    • General public is going to become globally more aware even if only a fraction of the public take actions to defend the general public rights and privacy.
    • Protection of privacy is going to improve dramatically, often through pervasive use of Cryptography in consumer products and applications.
    • Privacy is going to become more and more well regarded by consumers, understanding that it protects them both from online criminals and from uncontrolled mass-surveillance by governments.
    • New protection technologies will be provided by auto-organized groups, most often from open source software movement and hacker circles, and will be massively adopted in new upcoming communication devices and applications brought by start-ups and non-profit free software organization.
    • Software publishing corporations will be slower to adopt and publish privacy-enabling solutions but will gradually understand these are part of necessary security and recognize the growing market for such security.
    • Corporations will protect themselves more and more with the same techniques as individual do and will see impact on their own security posture. Some impacts will be positive such as better intellectual property protection. Some impacts will need new measures such as the pervasive use encryption (SSL/TLS for example) on DLP, IDS and IPS technologies.
    • Telecom and Mobile provider will need to show their investment in protecting against uncontrolled mass surveillance and will ask for more oversight and clearer situation from governments and administration.
    • General awareness against information insecurity by the general public will have tremendous positive impacts against online criminal activities, far out-benefitting the decreased efficiency of mass surveillance.

    For more information, come see /tmp/lab conference on saturday 18th january 2014 at Médiathèque Aragon in Choisy le Roi.

     

  • Samedi, Décembre 28, 2013 - 00:18
    DIY – Générateur de Marx

    C’est pas encore l’heure des bonnes résolutions, mais je renoue ici avec une de mes passion premières, un peu délaissée ces derniers temps : la haute tension.
    Le montage auquel je me suis attaqué aujourd’hui est assez simple dans son fonctionnement, il s’agit d’un générateur de Marx, qui permet de multiplier une tension. L’avantage de ce montage, est qu’outre sa simplicité, la tension de sortie est directement proportionnelle au nombre d’étages mis en jeux (aux pertes près).

    Générateur de Marx

    Générateur de Marx

    Le concept consiste à charger X condensateurs en parallèles, et les décharger en série. Pour arriver à un pareil résultat, on va utiliser des éclateurs. En effet, tant que la tension  aux bornes du condensateur ne dépasse pas une certaine tension, rien ne se passe, les condensateurs se chargent tranquillement, et la tension à leurs bornes augmente peu à peu.

    Charge

    Charge

     

    Mais lorsque cette tension est atteinte, un arc électrique se produit sur l’éclateur, qui deviens ainsi conducteur.

    Décharge. En bleu ciel, les arcs électriques

    Décharge. En bleu ciel, les arcs électriques

    (oui, désolé pour les couleurs un peu flashy, ça pique les yeux, je sais)
    Pour que ça fonctionne (bien), il y a tout de même quelques paramètres importants à respecter. Déjà, il faut que la tension d’alimentation soit suffisamment élevée pour pouvoir produire un arc électrique, sinon les éclateurs ne fonctionneront pas. Ensuite, les résistances de charges. J’ai un peu galéré pour trouver des résistances correctes pour ce montage. Au début, j’étais partis avec des résistances couches carbone (les classiques), mais rapidement les arcs sont passés par le côté de la résistance, détruisant celles-ci. J’ai ensuite voulu utiliser des résistances de puissances en céramique. Mauvaise idée : elles ont été détruites en totalité sur un seul shoot. Je suspecte plus la déflagration d’avoir endommagé l’intérieur que la chauffe proprement dite car elles étaient sensées tenir plus que les couches carbone, ce qui n’aura pas été le cas ici. Finalement, j’ai utilisé des résistances bobinées de puissances, et après quelques dizaines de minutes de fonctionnement, tout à l’air en ordre de marche. Dernier point, la distance entre les éclateurs est relativement importante, c’est d’elle que dépendra la « tension de claquage »

    Mon générateur de Marx

    Mon générateur de Marx

    Comme on peut le voir sur la photo, mon générateur est constitué de 6 étages, ce qui multiplie donc par 6 la tension d’entrée… En théorie. En effet, mes éclateurs étant difficiles à régler, ma tension de claquage est assez loin du maximum débité par mon alimentation. Au final, je dois arriver à une tension de 10Kv par condensateur, soit 60Kv en sortie.
    Les éclateurs sont de simples fils de cuivre recourbés, passés au papier de verre pour enlever l’émail.

    Le générateur en action

    Le générateur en action. Le père Noël fait 12cm

    Petit détail pour ceux qui serais tentés par l’expérience, et qu’il est difficile de rendre sur une photo : C’est extrêmement bruyant !! (genre mitraillette dans le salon)

  • Jeudi, Décembre 26, 2013 - 09:03
    G2N, un pistolet pour jeux vidéos -2-

    Suite de l'étude précédente :

    • On continue avec l'intégration de la « Pistol Board » dans le pistolet Virtua Gun de SEGA.

    Les borniers se relieront à la Main board pour fournir l'alimentation et les signaux de la camera, ainsi que pour les boutons start et gâchette de la manette USB.
    dsc09362.jpg
    dsc09363.jpg

    • C'est en place, reste à connecter la caméra IR.

    ATTENTION, Il faut obligatoirement une camera provenant d'une Wiimote officielle Nintendo !
    La caméra d'une copie Chinoise, telle que celle-ci ne sera en rien compatible avec notre montage :
    dsc09240.jpg
    dsc09228.jpg
    dsc09229.jpg
    dsc09233.jpg
    dsc09231.jpg
    dsc09238.jpg
    dsc09234.jpg

    Voici donc la caméra Infra-rouge Pixart dé-soudée depuis une véritable Wiimote, sans Motion Plus intégré, modèle RVL-003.
    dsc09433.jpg
    dsc09436.jpg

    Je l'ai ensuite câblé sur une nappe de fils avec un connecteur HE10 Femelle au bout.
    Afin de faire tenir la caméra dans le pistolet, on va exploiter une des fentes d'1 mm de large disposées dans le canon, là où se trouvait la lentille du Virtua Gun.
    dsc09439.jpg
    dsc09616.jpg

    Dans de la carte plastique d'1 mm d'épaisseur, a donc été découpé un disque percé d'un carré pour y loger la caméra.
    Le filtre UV de la Wiimote a été sculpté pour s'adapter a la forme du canon, et le disque est formé grâce à des rajouts en carte plastique de 2 mm.
    dsc09609.jpg
    dsc09608.jpg

    Voilà les pièces achevées, désolé, le flash a cramé les photos, et on ne voit pas vraiment le cordon de colle tout autour de la caméra, utilisé pour fixer le montage.
    dsc09614.jpg
    dsc09615.jpg

    Reste à mettre en place la caméra connectée à la pistol board dans le pistolet.
    Attention, si la WiiSensorBar est disposée au dessous de l’écran, la caméra IR doit être placée avec les pins vers le haut; Pins vers le bas si la caméra est au dessus de l'écran.
    dsc09621.jpg
    dsc09623.jpg
    dsc09618.jpg

    Mise au point :

    Après avoir effectué les branchements de l'alimentation 5V et relié la Pistol Board à la Main Board, on peut mettre le montage sous tension.

    1. La première chose à faire, est d'agir sur le potentiomètre RV2 pour régler la luminosité de l'écran LCD.
    2. Après un reset du circuit (SW1), le message d'accueil doit apparaître.
    3. Ensuite, il faut mettre JP2 sur ON pour passer le montage en mode View Blob.

    Après un reset, ce mode va afficher des 1023 sur l'écran LCD… Dés qu'on passe une source infra-rouge (flame de briquet, WiiSensorBar) devant la camera, une suite de chiffre va alors varier, témoignant du bon fonctionnement du circuit.

    TroubleShooting :

    • L'écran n'affiche rien -> Régler RV2.
    • Le message « camera I2C Error » s'affiche sur l'écran ->

    - Vérifier que les 3 CI sont bien alimentés.
    - Vérifier le câblage de la camera…
    - Essayer de débrancher la pistol board, à la place des 1023, il devrait s'afficher des 0, ce qui à priori témoigne du bon fonctionnement de la main board.

    CAMERA I2C ERROR (1/2 sec)
    LOADING CONFIG…  (3 sec de pause)
    CONFIG LOADED… (3 sec de pause)
    0000000000000000
    0000000000000000
    

    - Reconnecter les deux cartes, tout semble ok, pourtant si les 1023 restent figés, il y a sans doute un problème de communication entre les deux cartes.
    - Déconnecter le signal SDA entre la main board et la pistol board et mettre sous tension, on va procéder à quelques mesures :

    Quand SDA est en l'air, au démarrage, la Main Board passe en mode view blob.
    Quand SDA est branché, à la Pistol Board (résistance de pull-up 2,2k au 3V), au démarrage, la Main Board bloque sur Camera I2C Error.
    À l'oscilloscope on mesure bien le train sur SCL envoyé par le PIC.
    Dés qu'on connecte la broche SDA, le signal SCL disparait. La mesure de SDA est à zero.
    On peut voir SCL qui vit sa vie, calibre 100µs, puis 10µs :
    hni-0049.jpg
    hni-0048.jpg
    hni-0050.jpg
    Là, on branche la résistance de SDA, et SCL passe à 0.
    Si on déconnecte cette résistance de pull-up, SCL reste à 0.
    Le signal sur SCL revient après un reset du PIC à condition que la pin 15 (SDA) reste en l'air.
    De plus, à l'oscilloscope, les signaux d'alimentation 5V et le 3V apparaissent bruités.
    En débranchant la caméra de la Pistol Board, les signaux redeviennent propres.

    À ce stade, il semblerait que la Pistol Board soit fautive.
    On peut le vérifier en établissant le dialogue entre la Main Board et la caméra, sans passer par la Pistol Board, mais en utilisant les signaux d'horloge, d'alim et de reset provenant de la Wiimote elle même !
    Si la Main Board ne plante pas sur I2C Error et que les 1023 du mode Blob fonctionnent, c'est gagné, rechercher la panne sur la Pistol Board.

    • Justification des modifications par rapport au montage original :

    L'horloge et le reset volé à la Wiimote ayant permis un fonctionnement correct, je me suis tourné vers l'oscillateur à quartz 25Mhz, qui, une fois la caméra IR connectée au circuit provoquait un méchant parasitage du 5V, et donc du 3,3V , induisant alors tous les soucis de communications.
    La caméra fonctionnant en 3,3V, je me suis dit qu'elle pourrait ne pas apprécier de manger une horloge à 5V.
    J'ai donc utilisé un oscillateur à quartz alimenté en 3,3V @25Mhz (le 24MHz, comme la Wiimote étant difficile à trouver), ce qui est beaucoup plus logique quand on sait que la caméra IR Pixart fonctionne en 3,3V !

    Interfacer avec l'ordinateur :

    • Une fois que le système fonctionne en autonome, il reste à le faire passer pour un joystick analogique aux yeux de l'ordinateur.

    Pour ce faire, en attendant le développement d'une carte Add-On spécifique, on va désosser une manette et utiliser le joystick analogique qui pilote la croix de direction (et pas l'autre !).
    Il suffit de dessouder le potentiomètre (sa valeur doit être de 10kΩ pour que le circuit du joystick soit compatible avec le G2N) et de brancher des fils à la place en direction du connecteur K1 de la Main Board (Xa, Xw, Xb et Ya, Yw, Yb).
    dsc09606.jpg
    dsc09624.jpg
    Il faut aussi relier un fil depuis un bouton de la manette, vers K1 sur la position Reload.
    Côté Pistol Board il faut câbler deux autres boutons de la manette vers la gachette SW1 et le bouton Start SW2.

    • On en profite pour repiquer du 5V sur la manette afin d'alimenter la Main Board.
    • Quand on agite le pistolet devant une source infrarouge, le mode test de manette de jeu de l'ordinateur doit permettre de visualiser la croix directionnelle bouger.

    À suivre…

  • Samedi, Décembre 21, 2013 - 17:52
    Conference “Pourquoi Obama lit-il mes mails ?”

    Le samedi 18 janvier 2014 à la Médiathèque Aragon de Choisy le Roi.

    Le /tmp/lab a fait en partenariat avec les médiathèques de la Ville de Choisy qui font la promotion le logiciel libre et la culture du partage. La superbe salle de conférences de la nouvelle Médiathèque sera le lieu de conférences organisées par le /tmp/lab dans l’année à venir.

    Pour la première édition, Philippe Langlois nous parlera des enjeux des écoutes NSA/PRISM dans le cadre d’une perspective historique accessible à tous : évolution des techniques et des politiques sur 50 ans…

    Bien entendu accès libre et très simple en RER (3 minutes à pied). N’hésitez pas à venir rien que pour voir le lieu (bornes Linux, bornes de téléchargement de contenus libres / domaine public, entre autres). Nous aurons normalement une retransmission audio/vidéo live de la conférence pour ceux qui ne pourraient pas venir.

    gabarit-page001

  • Vendredi, Décembre 20, 2013 - 08:40
    Impressions multi-matériaux avec un seul extrudeur

    Imprimer directement en plusieurs couleurs peut vraiment être intéressant, par exemple, pour intégrer des pictogrammes informatifs sur la face d'un objet ou simplement dans un but purement décoratif.

    Ultimaker propose un kit permettant d'imprimer en 2 couleurs (ou 2 filaments de matériaux différents) mais les retours sur les forums ne m'ont pas convaincus de l'acheter, je pense au final que le ratio coût / intérêt n'est pas vraiment bon lorsque l'on s'en sert uniquement pour du multi couleurs, l'intérêt est bien plus grand pour de l'impression multi-matériaux (support en PVA par exemple).

    Je vais vous expliquer 2 méthodes qui vous permettront de passer à l'impression multi couleur avec un seul extrudeur.

    Notez que cet article tourne autour de l'Ultimaker et de son slicer Cura mais il est tout à fait possible d'adapter cette solution à toute RepRap.

    Avec le plugin Cura : PauseAtZ

    En utilisant le plugin fourni avec Cura PauseAtZ qui permet, comme son nom l'indique, de stopper l'impression à une certaine hauteur, de parker la tête afin de changer le filament et ensuite de relancer l'impression avec le nouveau filament.

    Le principal problème de cette technique est qu'il ne permet pas à une couche d'avoir plusieurs couleurs, rien de vraiment nouveau avec cette méthode...

    Feinter le slicer : PauseAtExtruderChange

    Dans cette méthode, on va utiliser Cura exactement comme si nous avions le kit de double extrusion, et allons dire à Cura de slicer comme tel. C'est par la suite que nous allons lire le GCode et remplacer l'instruction de changement de tête (Tx) par des instructions permettant de parker la tête le temps d'effectuer le changement de filament.

    Voici les étapes exactes :

    1. Parker le Z
    2. Déplacer la tête en X, Y à la position de parkage
    3. Stopper le ventilateur
    4. Attendre une action de l'utilisateur (nécessite un ulticontrolleur TODO)
    5. Restaurer la position X, Y
    6. Redémarrer le ventilateur
    7. Restaurer le Z

    Nous pourrions également utiliser le G-Code M600 mais il s'agit d'une instruction en test qui n'est pas inclut par défaut dans tous les firmware et l'utilisation de nos propres instructions nous permet de faire exactement ce que l'on souhaite...

    En pratique

    1. Installez le plugin Cura PauseAtExtruderChange, (déposez simplement le fichier PauseAtExtruderChange.py dans le dossier ~/.cura/VERSION/plugins)

    2. Créons un nouveau profil d'imprimante : File > Machine setting > Add new machine, dans le panel Extruder 2, on s'assure que Offset X et Offset Y soit égal à 0 comme dans l'image ci-dessous :

    Cura - Machine settings

    3. Importez vos fichiers stl, précisez à Cura que vous souhaitez les fusionner pour faire de la double extrusion (sélectionnez le premier objet d'un clique gauche, puis, bouton droit sur le second objet et cliquez sur Dual extrusion merge)

    4. Ajoutez le plugin, modifiez les paramètres tel que vous le souhaitez et vous voilà avec votre fichier G-Code modifié

    5. Lancez l'impression et l'imprimante vous signalera chaque changement de couleur, il vous restera alors à changer le filament, valider le changement auprès de l'imprimante, l'impression reprendra alors exactement oû elle avait été arrêtée mais avec un autre filament.

    Note: Vous pouvez aussi utiliser le fichier python directement en ligne de commande : python PauseAtExtruderChange.py file.gcode > out.gcode (python PauseAtExtruderChange.py -h pour avoir de l'aide)

    Voilà ce qu'il est possible de faire très simplement :

    Vous voilà maintenant capable d'imprimer en multi couleur d'une manière un peu plus évoluée qu'avec PauseAtZ, néanmoins, l'utilisation de PauseAtExtruderChange ne sera intéressante que pour des impressions ou le nombre de changement de couleur par couche est faible sinon, vous risquez de passer votre temps à changer de filament...

  • Jeudi, Décembre 19, 2013 - 09:08
    Great resource by Bernardo Damele A. G. On Reverse shells one-liners

    It’s worth checking it out, and since in hacking and security the basics are never completely understood, read it:

    http://bernardodamele.blogspot.fr/2011/09/reverse-shells-one-liners.html?m=1

  • Mercredi, Décembre 18, 2013 - 16:13
    Noisebridgers Make Novel Method to Cycle LED’s

    Welcome to our workbench.

    Jameco and Instructables.com donated a buncha weird parts to Noisebridge, including LED’s, crystal oscillators, 555 timers, Russian capacitors…. Thank You, JameCo and Instructables! Thanks Dana Sniezko for suggesting this partnership.

    Our mission: make something that does something. Not as easy as it sounds.

    The result: A 9-volt battery driving an LM317 power-supply outputting 5 volts, driving a tiny sliver of crystallized rock into resonance at one-and-a-half thousand vibrations per second, divided in half, 8 times, by a binary counter, down to a speed of about six vibrations per-second, driving an LED.

    Meaning, we made multiple LED’s blink at varying rates, all without a microcontroller. “i’m happy to say, not one 555 was used”, says Johny Radio, organizer. “This was my design goal, since everybody uses 555′s for everything.”

    John Ellis provided essential insight regarding chip-pinouts, Jonathan brain-hacker suggested using two crystals to derive beat-frequencies (which we decided added unnecessary complexity, and would have delayed pizza-time), Martino Da Video was our handsome public-relations representative (he wore pink sunglasses), and Johny Radio conceived the circuit design. It was a real Noisebridge group achievement.

    “One amazing Instructable” says Carley Jacobson of Instructables.com.

    For more details and hot pix, and to learn how to make your own, go to:
    http://www.instructables.com/id/EH2QS8KHMMF6TQA/
    850 views, 6 faves, and counting…

  • Mercredi, Décembre 18, 2013 - 00:17
    New hand-held toy

    Il y a quelques temps, le site Hackaday a publié un article intéressant, que vous pouvez lire ici. Il est question de caméra thermique à environ 1000€, qu'une mise à jour firmware permet d'upgrader directement à la version plus performante (et six fois plus chère). Parfois, ce ne sont que quelques paramètres logiciels qui différencient les modèles d'une gamme de produit... ce qui est bien pratique pour le fabricant, mais aussi pour les gens sachant reflasher un équipement.

    Il n'en fallait pas beaucoup plus pour titiller notre curiosité... et déclencher l'achat à titre perso d'un exemplaire, pour vérifier tout cela. Vérification faite (avec succès), le lab s'est immédiatement doté de l'une de ces caméra :

    Caméra thermique
    Caméra dans sa valise de transport

    Il s'agit donc d'une caméra thermique, d'une résolution de 320x240, de -20°C à 250°C, capable de prendre des photos et d'enregistrer des vidéos, le tout avec différents modes de visualisation (voir caractéristiques techniques complètes ici).

    Elle n'est pas nécessairement extrêmement précise pour ce qui est de la mesure absolue, mais d'une aide incomparable lorsqu'on rencontre des problématiques thermiques, ne serait-ce que parce qu'elle permet d'avoir une vue relative des différences de température entre les objets visés.

    On passe sur les photos "amusantes" produites, pour directement vous donner un aperçu de ce que ce genre de jouet d'équipement permet :

    Tableau électrique FLIR
    Tableau électrique

    Voici une vue du tableau électrique de la zone élec. Après examen plus détaillé, il s'agit du disjoncteur du circuit d'éclairage, dimensionné correctement, mais avec peu de marge : il chauffe. Impossible sans cet outil d'examiner ce genre de problème. Désormais c'est bon, on est parés pour attaquer les travaux du lab v2 !

    Carte électronique FLIR
    Carte robotique

    Voici une carte en cours de conception, contenant des éléments de puissance. Afin de vérifier comment l'ensemble se comporte en température, rien de tel qu'une petite photo (ou visualisation en direct, la réactivité étant excellente)... L'équipe robot du lab n'a aucune excuse cette année ;)

    Bref, le lab est désormais équipé ! Si vous avez l'utilité de ce matériel pour l'un de vos projets (ou, si vous voulez jouer avec...), rendez vous lors d'une ouverture ;)

  • Mardi, Décembre 17, 2013 - 23:19
    Published !

    Il y a quelques jours, j'ai reçu un coup de fil pour le moins intéressant :
    - Je me demandais si ça t'intéresserait de participer à l'écriture d'un livre sur les fablabs, hackerspaces, et ainsi de suite ?
    - Oh que oui cher ami, mais comment et quand ?
    - Tu pourrais nous rejoindre, à Rennes, là tout de suite, jusqu'à dimanche ?
    - wait whaaat ? Là, maintenant ? Je suis à Nanterre, moi, et j'avais des trucs de pré...
    - Oui, oui, on a commencé il y a deux heures ! Les frais sont couverts, ça va être fun, allez, viens !

    Pour une fois qu'un contact spontané ne résulte pas dans le transport improvisé d'une machine de trois tonnes... j'ai donc sauté dans un train pour Rennes, afin de rejoindre la fine équipe rassemblée pour l'occasion dans les locaux d'Activ Design (une école de graphisme libre, et donc un repaire de libristes), qui accueillait ce liberathon.

    Flossmanuals et liberathon : kesako ?
    Pour ceux qui ne connaitraient pas encore Flossmanuals, vous pouvez consulter leur site ouaibe.
    Il s'agit d'une association, dont l'objet est l'écriture et la publication de documentation pour les projets opensource, voire libres. Soutenue par divers mécènes qui ont un intérêt à ce genre de choses, l'idée est d'enfermer de regrouper dans une pièce un ensemble de gens jusqu'à ce que mort s'en suive qu'ils produisent une documentation utilisable.

    C'est ce qu'ils appellent booksprint, ou encore liberathon : quatre jours de rédaction intense, fruit de la collaboration d'experts (habituellement contributeurs majeurs au projet libre en cours de documentation), des connaisseurs (utilisateurs avancés) et des néophytes (simples curieux... potentiellement doués pour la rédaction), tous encadrés par des facilitateurs (membres de l'association qui supervisent les opérations). Le résultat est ensuite publié sous licence GPL, et disponible également en version imprimée. Classe !

    Pour cela, une plateforme en ligne est utilisée - elle est d'ailleurs utilisable librement, si l'envie vous prend de pondre une belle documentation sur l'un de vos projets... ou bien de contribuer à l'un des nombreux ouvrages déjà existants.

    Revenons au bouquin
    Les critiques sont unanimes : "Rennes est une ville sympa !". Non, je voulais dire (mais en fait, si, c'est vraiment sympa) : on a écrit un livre qui a le mérite d'exister. Lisez le, achetez le, même, ça fait vivre l'association, et leur cause est belle et juste. Fruit du travail collaboratif (et donc de certaines concessions) de plusieurs auteurs selon le principe décrit ci-avant, cet ouvrage vise à faire un petit tour d'horizon sur ces fameux lieux qui nous préoccupent.

    Le livre est en libre accès (et téléchargement, et édition) sur le site ouaibe.

    Après un rapide historique pour situer de quoi on parle, et une très attendue analyse définitive (ou presque) de ce qui distingue notamment un hackerspace d'un fablab (on en avait parlé sur ce blog), on enchaine sur une présentation sommaire de quelques lieux représentatifs (des gens en présence, surtout). Rassurez vous, on a sous le coude assez de matériau exclusif Electrolab pour pondre l'historique et les valeurs du lieu en 36 volumes (pour ce qui est de l'index). Mais là, il a fallu rester concis.

    Pour rappel: c'est de la GPL: utilisez le template, créez le chapitre sur votre structure, et racontez au monde entier votre expérience ! Et ensuite, n'oubliez pas d'aller publier la même chose sur www.hackerspaces.org, que vous n'avez pas mis à jour depuis la tendre enfance de votre lieu/asso, on le sait tous.

    Ensuite, on parle du fonctionnement de ces lieux. Pour être franc, je n'étais pas encore arrivé lors de la prise de décisions à propos de la table des matières, et j'aurais probablement structuré les choses légèrement différemment. Il n'empêche que le livre présente à sa manière différentes phases de vie d'un lab, en donnant quelques pistes pour les utilisateurs, porteurs de projet, et curieux. Non, la recette pour fabriquer un lieu aussi génial que l'Electrolab n'est pas fournie intégralement (on la réserve pour un futur ouvrage), et non, la recette pour fabriquer un lieu à l'équilibre économiquement (c'est pas la même ?) n'y est pas non plus. Mais ya des pistes, quand même.

    La dernière partie rassemble ce qui pourrait être une forme d'essai sur les valeurs de ces lieux, histoire de discuter un peu du pourquoi on passe notre temps libre à faire vivre ce genre d'endroits.

    La suite ? Écrivez la vous même !
    Et ça s'arrête là. Ben oui, c'est la version 1.0 : à vous de contribuer ! On allait pas tout faire à votre place, non plus. Je plaisante, mais en fait je trouve le concept du liberathon assez intéressant, et les temps de réflexion en groupe sur ce qu'on fait, comment et pourquoi on le fait et vers quoi on veut aller sont à mon gout trop rares, ou trop peu formalisés.

    A quand un atelier booksprint à l'Electrolab ? On s'en fait un petit lors du prochain THSF ? D'un CCC/OHM ? Il me semble qu'il est grand temps de réfléchir ensemble à ce qu'on souhaite mettre en place, dans chacun de nos lieux, et collectivement. Le book hacking, après tout, cela manquait à nos occupations.

  • Mardi, Décembre 17, 2013 - 08:41
    NC393 development progress – the initial software

    The software used in the previous Elphel cameras was based on the GNU/Linux distribution supported By Axis Communications for their ETRAX processors. Of course it was heavily modified, we developed new code and ported many applications to run in the camera. Over the years we worked on making it easier to install, use and update, provided customized Live GNU/Linux distributions so those with zero experience with this operating system can still use the camera development software. Originally we used Knoppix-based CD, then DVD, then switched to Kubuntu when it became available and stable. And DVDs were eventually replaced by the USB flash drives.

    Knoppix and Kubuntu are for the host computer, the cameras themselves used the same non-standard, mostly home-brewed distribution, that became more and more difficult to maintain especially when Axis abandoned their processors. So even during the first attempt to move to a new platform we really hoped to be able to use modern distribution for the embedded systems. And get rid of the nightmare of porting ourselves such applications as PHP and then doing mostly the same all over again when the new revisions became available. To be able to use the latest Linux kernel and not to spend time modifying the IDE driver myself to provide support for the large block hard drives when most manufacturers abandoned 512 byte ones – 2.6.19 kernel does not have it and there is not easy to use the later drivers.

    Oleg is now working on adapting the OpenEmbedded distribution and the work flow for the new camera distribution, and while embracing the power of “bitbaking” we are trying to preserve the features we implemented in the NC353 camera software. And while the OpenEmbedded-based Yocto Project is for embedded system developers, we need the software for Elphel camera users – software that can be easily installed by a single script (at least on a particular GNU/Linux distribution) or come pre-installed on a flash media. It should work “out of the box” for the users with no prior GNU/Linux experience – most of the camera users have different OS on their computers. We would also like to keep what we believe has an important practical use – a feature behind our /*source is inside*/ logo on the cameras. Each camera keeps the source code of the modifications archived in the internal flash file system, so running the downloaded from the camera script by the user results in virtually identical binary image, even if some software in the camera was custom-modified from the official (supported through Elphel git repositories) distribution.

    There is still a lot left in the OE that we do not fully understand, but we are trying to do it right from the very beginning, understanding how important it is from our experience of making some major re-organizing code for the previous products. And Oleg is doing a good progress, there is a wiki page and Git repositories: meta-elphel393, meta-ezynq that document our work on this.

    I did not succumb to a temptation to start working on the FPGA code immediately – there are some new ideas we want to try as well as some left for a future major “revolution” when updating the existing cameras FPGA code for the new sensors and applications. Anyway – we are not under pressure to demonstrate images from the new camera and we are confident that this job will be done in the expected time and will have the NC393 operational by the second half of the 2014. And the time is working for us – there are many people working now with Xilinx Zynq, and the active development weeds out bugs at a high rate. Failing to upgrade to the latest version already took a whole week of development time – the bug in the Xilinx Ethernet driver turned out to be already fixed.

    While Oleg was immersing himself into the OpenEmbedded I was looking into the kernel driver development, what changed since the 2.6.19 era I dealt with when working on the previous camera software. There turned out to be quite a few changes and I decided to learn the new features working on a simpler drivers that we needed for the new boards. First of all I was pleased to find out that of the 7 of the I²C chips used on the 10393+10389 boards 3 were supported by the available kernel drivers – had just to specify them in the Device Tree and the supercap-powered real time clock was immediately recognized by the system – so did the temperature sensor/EEPOM and GPIO ports. Of the remaining ones with no available drivers the most challenging turned out to be SI5338 (clock generator) and I tried to add support for this device, using sysfs to control it, Device Tree (DT) to initialize it, and dynamic debug to facilitate development – none of these interfaces were used in the previous cameras.

    The SI5338 had all the needed documentation available on the manufacturer’s web site, ready for download. But the device itself turned out not to be to so easy to control, and the recommended procedure included generation of the register map with the ClockBuilder software (for MS Windows), then loading the data to the device registers and initializing it with rather simple code, for which Silicon Labs provides the source. That did not seem very convenient so I tried to implement the driver that can be controlled at run time directly, calculating the particular register values from the high-level data on the fly. Most features are now supported in the si5338.c driver, it is also possible to load the register data generated by the ClockBuilder software (it is possible to run it with Wine) after converting the file with the Python script. It took me more time than I expected to develop this driver to the usable state, but I hope this work will be useful for others too. SI5338 is an excellent device that deserves better support in the Linux kernel. And having the driver working – it eliminates the last remaining obstacle to start working on the FPGA code. Or one of the last remaining – there are still a few minor ones left.

  • Lundi, Décembre 16, 2013 - 12:20
    Chris Lord: Linking CSS properties with scroll position: A proposal

    As I, and many others have written before, on mobile, rendering/processing of JS is done asynchronously to responding to the user scrolling, so that we can maintain touch response and screen update. We basically have no chance of consistently hitting 60fps if we don’t do this (and you can witness what happens if you don’t by running desktop Firefox (for now)). This does mean, however, that you end up with bugs like this, where people respond in JavaScript to the scroll position changing and end up with jerky animation because there are no guarantees about the frequency or timeliness of scroll position updates. It also means that neat parallax sites like this can’t be done in quite the same way on mobile. Although this is currently only a problem on mobile, this will eventually affect desktop too. I believe that Internet Explorer already uses asynchronous composition on the desktop, and I think that’s the way we’re going in Firefox too. It’d be great to have a solution for this problem first.

    It’s obvious that we could do with a way of declaring a link between a CSS property and the scroll position. My immediate thought is to do this via CSS. I had this idea for a syntax:

    scroll-transition-(x|y): <transition-declaration> [, <transition-declaration>]*
    
        where transition-declaration = <property>( <transition-stop> [, <transition-stop>]+ )
          and transition-stop        = <relative-scroll-position> <property-value>

    This would work quite similarly to standard transitions, where a limited number of properties would be supported, and perhaps their interpolation could be defined in the same way too. Relative scroll position is 0px when the scroll position of the particular axis matches the element’s offset position. This would lead to declarations like this:

    scroll-transition-y: opacity( 0px 0%, 100px 100%, 200px 0% ), transform( 0px scale(1%), 100px scale(100%), 200px scale(1%);

    This would define a transition that would grow and fade in an element as the user scrolled it towards 100px down the page, then shrink and fade out as you scrolled beyond that point.

    But then Paul Rouget made me aware that Anthony Ricaud had the same idea, but instead of this slightly arcane syntax, to tie it to CSS animation keyframes. I think this is more easily implemented (at least in Firefox’s case), more flexible and more easily expressed by designers too. Much like transitions and animations, these need not be mutually exclusive though, I suppose (though the interactions between them might mean as a platform developer, it’d be in my best interests to suggest that they should :)).

    I’m not aware of any proposal of this suggestion, so I’ll describe the syntax that I would expect. I think it should inherit from the CSS animation spec, but prefix the animation-* properties with scroll-. Instead of animation-duration, you would have scroll-animation-bounds. scroll-animation-bounds would describe a vector, the distance along which would determine the position of the animation. Imagine that this vector was actually a plane, that extended infinitely, perpendicular to its direction of travel; your distance along the vector is unaffected by your distance to the vector. In other words, if you had a scroll-animation-bounds that described a line going straight down, your horizontal scroll position wouldn’t affect the animation. Animation keyframes would be defined in the exact same way.

    [Edit] Paul Rouget makes the suggestion that rather than having a prefixed copy of animation, that a new property be introduced, animation-controller, of which the default would be time, but a new option could be scroll. We would still need an equivalent to duration, so I would re-purpose my above-suggested property as animation-scroll-bounds.

    What do people think about either of these suggestions? I’d love to hear some conversation/suggestions/criticisms in the comments, after which perhaps I can submit a revised proposal and begin an implementation.

  • Vendredi, Décembre 13, 2013 - 13:32
    Open Bidouille Camp 2013

    header.obc

    Nous serons présents à l'Open Bidouille Camp ce Dimanche 15 Décembre à Montreuil (93) pour animer un atelier de soudure de Dominoux.

    Ouvert à tous il donne aux petits et grands la possibilité d'apprendre à souder tout en s'amusant  !

    Vous retrouverez sur le site de l'OBC toutes les informations importantes pour participer à l’événement et connaitre tous les intervenants présents.

     

    Venez nombreux !

     

  • Lundi, Décembre 2, 2013 - 16:05
    RS Components distributing RepRaps

    This blog is for the RepRap Project, and so I do not normally post information here about the activities of our company, RepRapPro Ltd.  See our company blog for that sort of thing.

    No.  The reason for this post is that from today a seriously major international company - RS Components, the world’s largest distributor of electronics and
    maintenance products - will be stocking and selling completely open-source RepRap kits.  And in the future they hope to be selling components for RepRaps.  In particular they want to sell vitamins-only kits so that people can print their own RepRaps.

    For more details see RS's blog post here, and, of course, their catalogue here.

  • Vendredi, Novembre 29, 2013 - 15:31
    Chris Lord: Efficient animation for games on the (mobile) web

    Drawing on some of my limited HTML5 games experience, and marginally less limited general games and app writing experience, I’d like to write a bit about efficient animation for games on the web. I usually prefer to write about my experiences, rather than just straight advice-giving, so I apologise profusely for how condescending this will likely sound. I’ll try to improve in the future :)

    There are a few things worth knowing that will really help your game (or indeed app) run better and use less battery life, especially on low-end devices. I think it’s worth getting some of these things down, as there’s evidence to suggest (in popular and widely-used UI libraries, for example) that it isn’t necessarily common knowledge. I’d also love to know if I’m just being delightfully/frustratingly naive in my assumptions.

    First off, let’s get the basic stuff out of the way.

    Help the browser help you

    If you’re using DOM for your UI, which I’d certainly recommend, you really ought to use CSS transitions and/or animations, rather than JavaScript-powered animations. Though JS animations can be easier to express at times, unless you have a great need to synchronise UI animation state with game animation state, you’re unlikely to be able to do a better job than the browser. The reason for this is that CSS transitions/animations are much higher level than JavaScript, and express a very specific intent. Because of this, the browser can make some assumptions that it can’t easily make when you’re manually tweaking values in JavaScript. To take a concrete example, if you start a CSS transition to move something from off-screen so that it’s fully visible on-screen, the browser knows that the related content will end up completely visible to the user and can pre-render that content. When you animate position with JavaScript, the browser can’t easily make that same assumption, and so you might end up causing it to draw only the newly-exposed region of content, which may introduce slow-down. There are signals at the beginning and end of animations that allow you to attach JS callbacks and form a rudimentary form of synchronisation (though there are no guarantees on how promptly these callbacks will happen).

    Speaking of assumptions the browser can make, you want to avoid causing it to have to relayout during animations. In this vein, it’s worth trying to stick to animating only transform and opacity properties. Though some browsers make some effort for other properties to be fast, these are pretty much the only ones semi-guaranteed to be fast across all browsers. Something to be careful of is that overflow may end up causing relayouting, or other expensive calculations. If you’re setting a transform on something that would overlap its container’s bounds, you may want to set overflow: hidden on that container for the duration of the animation.

    Use requestAnimationFrame

    When you’re animating canvas content, or when your DOM animations absolutely must synchronise with canvas content animations, do make sure to use requestAnimationFrame. Assuming you’re running in an arbitrary browsing session, you can never really know how long the browser will take to draw a particular frame. requestAnimationFrame causes the browser to redraw and call your function before that frame gets to the screen. The downside of using this vs. setTimeout, is that your animations must be time-based instead of frame-based. i.e. you must keep track of time and set your animation properties based on elapsed time. requestAnimationFrame includes a time-stamp in its callback function prototype, which you most definitely should use (as opposed to using the Date object), as this will be the time the frame began rendering, and ought to make your animations look more fluid. You may have a callback that ends up looking something like this:

    var startTime = -1;
    var animationLength = 2000; // Animation length in milliseconds
    
    function doAnimation(timestamp) {
     // Calculate animation progress
     var progress = 0;
     if (startTime < 0) {
       startTime = timestamp;
     } else {
       progress = Math.min(1.0, animationLength /
                                  (timestamp - startTime));
     }
    
     // Do animation ...
    
     if (progress < 1.0) {
       requestAnimationFrame(doAnimation);
     }
    }
    
    // Start animation
    requestAnimationFrame(doAnimation);

    You’ll note that I set startTime to -1 at the beginning, when I could just as easily set the time using the Date object and avoid the extra code in the animation callback. I do this so that any setup or processes that happen between the start of the animation and the callback being processed don’t affect the start of the animation, and so that all the animations I start before the frame is processed are synchronised.

    To save battery life, it’s best to only draw when there are things going on, so that would mean calling requestAnimationFrame (or your refresh function, which in turn calls that) in response to events happening in your game. Unfortunately, this makes it very easy to end up drawing things multiple times per frame. I would recommend keeping track of when requestAnimationFrame has been called and only having a single handler for it. As far as I know, there aren’t solid guarantees of what order things will be called in with requestAnimationFrame (though in my experience, it’s in the order in which they were requested), so this also helps cut out any ambiguity. An easy way to do this is to declare your own refresh function that sets a flag when it calls requestAnimationFrame. When the callback is executed, you can unset that flag so that calls to that function will request a new frame again, like this:

    function redraw() {
      drawPending = false;
    
      // Do drawing ...
    }
    
    var drawPending = false;
    function requestRedraw() {
      if (!drawPending) {
        drawPending = true;
        requestAnimationFrame(redraw);
      }
    }

    Following this pattern, or something similar, means that no matter how many times you call requestRedraw, your drawing function will only be called once per frame.

    Remember, that when you do drawing in requestAnimationFrame (and in general), you may be blocking the browser from updating other things. Try to keep unnecessary work outside of your animation functions. For example, it may make sense for animation setup to happen in a timeout callback rather than a requestAnimationFrame callback, and likewise if you have a computationally heavy thing that will happen at the end of an animation. Though I think it’s certainly overkill for simple games, you may want to consider using Worker threads. It’s worth trying to batch similar operations, and to schedule them at a time when screen updates are unlikely to occur, or when such updates are of a more subtle nature. Modern console games, for example, tend to prioritise framerate during player movement and combat, but may prioritise image quality or physics detail when compromise to framerate and input response would be less noticeable.

    Measure performance

    One of the reasons I bring this topic up, is that there exist some popular animation-related libraries, or popular UI toolkits with animation functions, that still do things like using setTimeout to drive their animations, drive all their animations completely individually, or other similar things that aren’t conducive to maintaining a high frame-rate. One of the goals for my game Puzzowl is for it to be a solid 60fps on reasonable hardware (for the record, it’s almost there on Galaxy Nexus-class hardware) and playable on low-end (almost there on a Geeksphone Keon). I’d have liked to use as much third party software as possible, but most of what I tried was either too complicated for simple use-cases, or had performance issues on mobile.

    How I came to this conclusion is more important than the conclusion itself, however. To begin with, my priority was to write the code quickly to iterate on gameplay (and I’d certainly recommend doing this). I assumed that my own, naive code was making the game slower than I’d like. To an extent, this was true, I found plenty to optimise in my own code, but it go to the point where I knew what I was doing ought to perform quite well, and I still wasn’t quite there. At this point, I turned to the Firefox JavaScript profiler, and this told me almost exactly what low-hanging-fruit was left to address to improve performance. As it turned out, I suffered from some of the things I’ve mentioned in this post; my animation code had some corner cases where they could cause redraws to happen several times per frame, some of my animations caused Firefox to need to redraw everything (they were fine in other browsers, as it happens – that particular issue is now fixed), and some of the third party code I was using was poorly optimised.

    A take-away

    To help combat poor animation performance, I wrote Animator.js. It’s a simple animation library, and I’d like to think it’s efficient and easy to use. It’s heavily influenced by various parts of Clutter, but I’ve tried to avoid scope-creep. It does one thing, and it does it well (or adequately, at least). Animator.js is a fire-and-forget style animation library, designed to be used with games, or other situations where you need many, synchronised, custom animations. It includes a handful of built-in tweening functions, the facility to add your own, and helper functions for animating object properties. I use it to drive all the drawing updates and transitions in Puzzowl, by overriding its requestAnimationFrame function with a custom version that makes the request, but appends the game’s drawing function onto the end of the callback, like so:

    animator.requestAnimationFrame =
      function(callback) {
        requestAnimationFrame(function(t) {
          callback(t);
          redraw();
        });
     };

    My game’s redraw function does all drawing, and my animation callbacks just update state. When I request a redraw outside of animations, I just check the animator’s activeAnimations property first to stop from mistakenly drawing multiple times in a single animation frame. This gives me nice, synchronised animations at very low cost. Puzzowl isn’t out yet, but there’s a little screencast of it running on a Nexus 5:

    Alternative, low-framerate YouTube link.

  • Jeudi, Novembre 28, 2013 - 22:57
    Réunion auto hébergement de serveurs

    Compte rendu de la réunion

    Atelier / Présentation auto-hébergement de serveurs

    Jeudi 12 décembre à 20h30

    @/tmp/mpt
    30 rue de newburn
    94600 CHOISY LE ROI
    RER C Choisy / BUS 183

    Bonjour,

    Dans la série “autohébergement”, je voudrais… le serveur !

    Présentations de solutions réelles, du low voltage au rack qui tache, discussions sur les pourquoi et les comment de l’hébergement de serveur à la maison (ou ailleurs), de ses limites et de ses enjeux, présence de bons connaisseurs de ces questions, ouverture totale à tou-te-s ceux-celles qui veulent venir, quel que soit le niveau technique.

    Comme d’habitude nous avons ouvert un pad qu’il est libre de le consulter et d’y ajouter des informations et de les questions sur https://pads.usinette.org/p/auto-hebergement-serveurs

    Qui a déjà essayé ? Quels problèmes avez-vous rencontré ? Qu’est-ce qui vous semble essentiel à aborder / faire ? Quels sont les projets récents dans ce domaine qu’on connaîtrait pas ?

    Alban

Pages