Yoann Sculo - Ingénieur Linux Embarqué http://www.yoannsculo.fr Yoann Sculo - Blog d'un Ingénieur Linux Embarqué accro à vim. Bidouille, bricolage, hacking, systèmes embarqués, livres et calembours. 2014-08-17T00:00:00Z fr hourly 1 Premiers pas sur Firefox OS - ZTE Open C http://www.yoannsculo.fr/premiers-pas-sur-firefox-os-zte-open-c 2014-08-10 http://www.yoannsculo.fr/premiers-pas-sur-firefox-os-zte-open-c zte open c

J'ai fait l'acquisition, la semaine dernière, du premier téléphone vendu en France, faisant tourner Firefox OS. Le ZTE Open C

Si vous ne connaissez pas Firefox OS, je vous invite à consulter l'article très intéressant de Flaburgan, qui explique bien le projet et sa finalité.

J'avais pu tester rapidement Firefox OS aux FOSDEM 2013 et 2014, mais je souhaitais aller plus loin, tant l'idée du projet me plaisait ! Voici un premier bilan après une semaine d'utilisation.

Le téléphone ZTE Open C

Je me suis donc procuré le ZTE pour tester Firefox OS sans réelle volonté, pour le moment, de remplacer mon vieux HTC Desire HD au quotidien. Je voulais simplement tester ce concept d'OS libre. Et puis j'étais sacrément curieux de voir les rouages du système. Après tout, c'est mon métier :)

Je ne vais pas m'étendre sur le hardware. Le téléphone est juste un prétexte pour tester l'OS. A 69€ je ne m'attendais pas à une bête de course. Toutefois je reste agréablement surpris par le rapport qualité prix. Le téléphone fonctionne bien et j'ai pu tenir une semaine sans être (trop) frustré.

Le seul élément hardware gênant est l'appareil photo. L'APN de 2 Mpx du ZTE est, pour mon utilisation personnelle, clairement un frein à son usage quotidien. Ainsi, pour de bonnes photos, il faudra viser d'autres téléphones de meilleure facture.

Je tiens à préciser que le marché de Firefox OS s'adresse normalement pour le moment aux pays émergents et aux gens souhaitant acheter leur premier smartphone. Ainsi tout est relatif, car le ZTE l'a rien à envier à mon premier smartphone Android ! Je trouve que l'approche de Mozilla est ici très judicieuse, car il n'est pas question d'entrer en concurrence frontale avec Android et IOS sur un marché bien verrouillé. En partant de marchés émergents, Firefox OS va pouvoir mûrir et progressivement se faire sa place. Alors que se jeter directement dans le grand bain serait un peu trop ambitieux.

Je pense que ZTE joue ici la carte des early adopters. Et, comme nous allons le voir dans la suite de cet article, Firefox OS fonctionne plutôt bien. Il peut convenir à un certain nombre d'usages et de personnes en France.

Usage

Je suis en train de quitter Google progressivement, depuis presque un an. Et Firefox OS est une des solutions envisageables pour me débarrasser de cette dépendance. Je ne pense pas avoir de profil classique, dans la mesure où je n'utilise que très peu d'applications et jeux sur Android.

Mon usage se résume :

  • aux emails
  • aux photos
  • au calendrier
  • à la gestion de contacts
  • aux SMS/MMS et aux appels
  • au web
  • à Twitter
  • à afficher la carte du métro de temps en temps
  • et parfois jouer à des petits jeux comme 2048.

En théorie je pourrais amplement me passer d'Android. Voyons voir ce que ça donne en pratique

Configurer le wifi

Première galère, l'écriture dans les champs texte de Firefox OS. Ça vaut pour toutes les applications. Pour revenir sur une zone et éditer un mot déjà écrit, il n'y a pas de flèches gauche/droite ni de loupe. Il faut cliquer directement au bon endroit ou un peu après pour effacer pour recommencer. Donc pour rentrer une longue clé ça devient un peu chiant si on se trompe. Surtout si l'on souhaite vérifier que le début de la chaîne est bon. Car il a disparu bien à gauche, et sans flèche pour s'y rendre bah en cas d'erreur on efface tout et on recommence.

zte open c

Deuxième point concernant les champs textes, c'est que les lettres du clavier sont en majuscules, mais génèrent des minuscules. La touche SHIFT qui permet de faire des majuscules ne change pas pour autant l'aspect du clavier. Quand on est habitué à Android, on est un peu frustré. Mais on s'y fait.

Troisième élément, il n'y a pas de copier coller pour le moment. Apparemment ça arrive

Mis à part ça, tout marche bien pour le wifi :)

Twitter

toto

J'ai commencé par Twitter, histoire de faire mon malin à poster mon premier Tweet depuis Firefox OS. Il est assez agréable d'utiliser le clavier lorsque l'on a compris comment fonctionnait l’auto complétion. Malheureusement on a droit à une ponctuation forcée à l'américaine. Donc même si on met un espace avant les points d'exclamation et d'interrogation, le système nous colle ça automatiquement au mot d'avant. C'est lourd !

Mis à part ça, c'est Twitter, et ça marche bien pour mon usage !

Emails

Outch ! Alors là j'ai pas de chance. J'ai configuré l'application Courriel sur mon compte mail OVH. J'ai récupéré mes emails sans aucun soucis. Par contre, pas moyen de lire leur contenu, ni de les supprimer, ni d'envoyer d'email… J'ai recommencé la manipulation, pareil. En patientant sur l'écran de chargement pendant 30 minutes, l'email finit par s'afficher. Tout comme le reste des emails. Par contre pas moyen de supprimer ni d'envoyer d'email.

Bug email

J'ai cherché dans la FAQ. Rien. Et j'ai fini par tomber sur l'encart tout en bas de cette page. C'était bien caché ! Après avoir donc fait un tour sur IRC sur #b2g on m'a envoyé sur bugzilla. J'ai failli abandonner la recherche de mon bug dans la liste tellement il y en avait. Mais par magie je suis tombé sur mon bug et j'ai découvert que je n'étais pas le seul

En l'état, le seul moyen que ça fonctionne est de passer en POP3, mais l'IMAP semble très capricieux ! Ça commence bien ! Donc pour le moment je peux juste consulter mes emails. Cela semble spécifique à mon compte email. Donc il y a des chances que ça marche avec d'autres configurations.

J'en ai profité pour fournir des logs. Et cela m'a permis de découvrir plusieurs trucs.

  • Qu'il y a adbd sur FirefoxOS et que ça marche bien. Damn ! Si j'avais su ! Mais on me l'avait appris dans les commentaires de mon article sur adb.
  • Que remonter un bug avec logs est particulièrement lourd et pas à la portée de n'importe qui. D'autant plus que j'ai pesté un moment à ouvrir un compte sur le support Mozilla qui m'obligeait à créer un ticket pour répondre à un ticket...
  • Que l'on peut prendre des captures d'écran avec le bouton home et le bouton power

Mass storage

Aucun soucis. Ouf ! Pas de mtp.

Le Web

Aucun soucis. C'est Firefox :)

Calendrier

Agenda

J'ai branché mon Calendar Google pour le moment. Ça marche très bien. On peut également rajouter un calendrier CalDav, option dispo sur mon NAS.

Je trouve même que le rendu du calendrier est mieux que celui de mon HTC Desire HD sous Android.

Les applications

Il existe deux façons d'installer des applications :

  • le Marketplace
  • la recherche adaptative

Le Marketplace

Rien de plus classique, c'est un magasin d'applications.

J'ai été juste un peu dérouté. Les applications s'installent comme ça, sans permissions. A la différence d'Android, on peut accepter d'installer une application mais en refuser certains accès. Si un jeu demande d'accéder aux coordonnées GPS, on peut l'envoyer bouler. C'est ensuite à l'application de gérer le refus de l'utilisateur. J'aime bien ce système, c'est juste qu'avec le passif d'Android ça fait bizarre d'installer directement une application de cette façon.

zte open c zte open c

Chaque application est estampillée d'un label PEGI. C'est bien, sauf que « 3 ans et plus » apparaît sur 80 % des applications. Le label PEGI semble étonnamment plus important que la description de l'application. Il faut cliquer sur chaque application pour savoir ce qu'elle fait. C'est assez lourd.

Je ne vais pas mentir en disant que le store est jeune et encore bien vide. Il est rempli de pâles copies de jeux populaires. Mais ça reste le lot de n'importe quel magasin d'applications. Cela fait complètement Android à ses débuts.

Pour mon usage, j'ai trouvé tout ce dont j'avais besoin. Donc je suis complètement satisfait !

Mais pour les amateurs d'applications et de jeux il faudra attendre que plus de développeurs s'approprient Firefox OS pour bénéficier d'un store d'applications de qualité.

La recherche adaptative

zte open c zte open c zte open c

Cette fonctionnalité permet d'effectuer des recherches sur des site mobiles qui peuvent être installés et utilisés comme applications.

De cette façon j'ai installé :

  • Duckduckgo
  • iMDB
  • la version officielle de 2048

J'ai joué pendant une semaine à 2048, j'avais l'impression d'être offline en y jouant. Donc j'en ai bien conclu que l'application avait été sauvegardée pour être lancée en offline.

Pour Duckduckgo, je dois systématiquement attendre que le site de duckduckgo.com se charge pour pouvoir lancer une recherche.

Gros regret tout de même, que Firefox OS ne mette pas en avant Duckduckgo. Il n'y a qu'un seul moteur de recherche, Google. Il n'y a pas encore d'application Duckduckgo sur le Market. J'espère que ça arrivera vite !

Divers

On retrouve une application native de suivi de conso. C'est bien pratique. Par contre, pas de calculatrice. Mais on en trouve sur le market.

zte open c zte open c

Pour mon plan de métro en PDF, on oublie. Le chargement se compte en minutes. Il faudra attendre une application RATP ou équivalent.

Le téléphone en lui même

zte open c

J'ai importé mes contacts Google et ça a marché super. J'ai appelé, on m'a appelé. J'ai échangé SMS et MMS. RAS là dessus. C'est même très ergonomique ! Reste un manque, les timestamp des SMS pour resituer les derniers messages envoyés/reçus. Mais j'imagine que c'est le genre de chose qui pourrait apparaître dans de prochaines mises à jour.

Conclusion

Concevoir un OS ergonomique et exempt de bugs est un travail colossal. J'admire le travail réalisé. En l'état, Firefox OS est largement utilisable pour les gens patients. Il y a des bugs, les applications sont souvent assez basiques et il y a énormément de perspectives d'améliorations. Mais ça fait globalement bien son travail ! A mes yeux il y a donc un énorme potentiel ! De plus, même avec plein d'applications lancées en même temps, le système n'a jamais ramé comme pourrait le faire Android ! Je suis agréablement surpris par la qualité du ZTE et de Firefox OS. A 69€ je savais à quoi m'attendre. J'estime en avoir eu pour mon argent.

Je pense néanmoins qu'il est encore trop top pour mettre Firefox OS dans toutes les mains et surtout celles des gros consommateurs d'applications. La marche d'Android/iOS vers FirefoxOS est encore trop importante, et il serait même anti-productif de pousser ce genre d'utilisateur vers ce nouveau système.

Cela résume l'usage actuel de Firefox OS à deux types d'utilisateurs :

  1. les personnes n'ayant jamais eu de smartphone et/ou ayant un usage très simple de leur téléphone, voir n'utilisant pas de data.
  2. les libristes / early-adopters / les développeurs / les personnes soucieuses de leur vie privée.

ZTE/Firefox OS est une combinaison de téléphone / OS que je conseillerais par exemple à mes parents. Simple à utiliser, mine de rien plutôt ergonomique et sans fioritures.

Firefox répond ainsi à la pluspart de mes besoins. Mais bien que rentrant dans la seconde catégorie sus-citée, aujourd'hui je fais le choix l'arrêter d'utiliser le ZTE au quotidien pour deux raisons :

  • L'appareil photo n'est pas d'assez bonne résolution pour mon usage personnel. Mais ça, je le savais dès le départ. Toutefois, cela pourrait par contre convenir à la première catégorie d'utilisateurs.
  • Le client mail n'est pas complètement fonctionnel pour ma configuration de mail. Mais ça reste temporaire, les bugs sont dans bugzilla et devraient être corrigés dans de prochaines versions. Juste une question de temps pour que l'on atteigne une qualité similaire à K-9 Mail sous Android, je l'espère.

Je vais maintenant tester Cyanogenmod que j'ai flashé sur mon HTC pendant que j'utilisais Firefox OS comme téléphone principal. Je vais ainsi expérimenter un Android sans Google au quotidien, ce qui sera l'occasion d'un second billet bientôt.

Je garde mon ZTE dans un coin et compte attendre les prochaines mises à jour pour les tester et remonter des bugs au fur et à mesure. Lorsque le client mail sera réparé et que des téléphones avec de bons capteurs d'appareil photo seront dispo en France, la question de l'usage au quotidien se reposera très clairement !

En attendant, j'ai Cyanogenmod et F-Droid à tester. Je compte également regarder d'un peu plus près la structure du système et le code de Firefox OS, ce qui sera peut-être le sujet d'un prochain article.

Et pour la route, des liens intéressants :

]]>
EmbeddedMap - Une carte des sociétés en Systèmes Embarqués http://www.yoannsculo.fr/embeddedmap-carte-societes-systemes-embarques 2014-07-15 http://www.yoannsculo.fr/embeddedmap-carte-societes-systemes-embarques Je référence depuis quelques années les sociétés liées aux systèmes embarqués dans une liste que j'ai déjà publié dans mon blog l'année dernière.

Je contribue à mes heures perdues à OpenStreetMap depuis déjà plus d'un an. J'ai voulu il y a quelques mois m'amuser avec les API web, notamment Leaflet. Et j'ai réalisé que je pouvais matérialiser ma liste sur une carte de la France en y plaçant un curseur pour chaque société. Au début c'était pour le fun et par curiosité. J'ai passé un moment à noter chaque adresse postale puis les convertir en coordonnées GPS. J'ai été agréablement surpris par le résultat !

EmbeddedMap

Résultat qui ressemble étrangement aux cartes issues de l'étude récente de l'OPIIEC.

Apec

En effet, on peut facilement repérer les régions dont la concentration de société est forte et inversement. J'ai même découvert la présence de sociétés, dont j'ignorais l'emplacement, à côté de chez moi. Je réalise que l'outil peut être particulièrement utile lors des recherches d'emploi où même pour savoir où déménager en fonction de la présence de sociétés dans les environs.

Et donc j'ai mis à disposition cette carte sur mon serveur : embeddedmap.sculo.fr

EmbeddedMap

Le travail est loin d'être terminé. Il n'y a pour l'instant que 124 sociétés dont j'ai récupéré les coordonnées GPS. J'y vais progressivement, dans la mesure où c'est particulièrement long et répétitif à faire. Mais le résultat est déjà montrable, raison pour laquelle je partage cela maintenant.

A terme, j'aimerais pouvoir :

  • rajouter des catégories (Industriels / service / éditeurs / OEM & Equipementiers / ...)
  • rajouter des secteurs d'activité
  • permettre le tri par catégories et secteurs
  • rajouter les salons et événements liés à l'embarqué
  • rajouter plus d'informations sur les sociétés

J'ai déposé les sources (très basiques) de la page, ainsi que les données au format json sur github.

N'hésitez pas à me faire par de vos remarques voir à m'aider en contribuant sur le projet ;) Il y a notamment beaucoup de travail sur la récupération d'informations sur les sociétés.

]]>
Etude sur l'évolution des emplois et des formations en Systèmes Embarqués - OPIIEC http://www.yoannsculo.fr/etude-evolution-emplois-formations-systemes-embarques-OPIIEC-2014 2014-07-04 http://www.yoannsculo.fr/etude-evolution-emplois-formations-systemes-embarques-OPIIEC-2014 Je viens de tomber via LinkedIn, et par l'intermédiaire de Christophe Blaess, sur une étude super intéressante sur le marché des systèmes embarqués en France. L'étude réalisée par l'OPIIEC est particulièrement détaillée, on y apprend pas mal de choses.

Dans les grandes lignes on y lit qu'en France, la filière Systèmes Embarqués regroupe 1,3% des actifs, soit 387.500 personnes. Qu'il y a eu une croissance de 76% de ces effectifs en 6 ans, soit 9,9% par an.

En 2014, le salarié type en Systèmes Embarqués...

  • travaille en en Île-de-France (exemple du plateau de Saclay), dans le Sud-Est (Grenoble ou Sophia-Antipolis) ou dans le Sud-Ouest (Bordeaux ou Toulouse - dynamisme du secteur aéronautique)
  • est ingénieur ou cadre (72% des effectifs) avec un niveau important d’expérience (46% ont plus de 5 ans dans les Systèmes Embarqués)
  • occupe une fonction d’ingénieur R&D électrique / électronique / mécanique ou de concepteur / développeur logiciel

Métiers

Le secteur connaît moins la crise que la moyenne. En effet, le nombre de demandeurs d’emploi des familles professionnelles des Systèmes Embarqués (informatique / électronique) est de 2 à 10 fois inférieur à la moyenne nationale.

9,1% des offres APEC publiées correspondent à des postes en Systèmes Embarqués. La répartition géographique des offres d'emplois en France parle d'elle même !

Apec

Le salaire moyen à l’entrée dans la vie active est de 37897€ (la moyenne nationale étant à 35184 € d’après l’Usine Nouvelle)

L'étude dresse un portrait des différents acteurs du secteur. D'ailleurs, de nouveaux noms vont bientôt atterrir dans ma liste ;) Merci !

Le rapport qui liste des besoins en matières premières (matériaux/terres rares) et leur criticité et très instructif !

On nous confirme que le marché français des fournisseurs de composants est un marché de niche. Les acteurs se comptent sur les doigts de la main. Je connaissais Eolane, mais je découvre Asteelflash et Cofidur. On cherchait justement la semaine dernière au ParisEmbedded #4 des noms d'usines en France pouvant produire des quantité d'environ 1000 produits. La discussion était très intéressante et édifiante d'ailleurs. En dessous de 1000 par de soucis. Au dessus c'est trop, et il faut aller en Chine. 1000 est une quantité bâtarde qui n'intéresse pas la Chine et qui est au delà des capacités de production de sociétés françaises. L'étude illustre bien ce constat assez désespérant.

Cette dernière confirme également la montée en puissance de l'Open source dans le secteur. En 2013, 47% des projets Embarqués avait un OS libre contre 36% en 2009.

Hélas je ne suis pas forcément super convaincu que cette croissance est due à une adoption subite du Libre et de sa culture... Mais plutôt au fait qu'Android et Linux sont des solutions "Open Bar" et tout bénef pour les industriels. Bon en réalité même s'ils s'y retrouvent au final, ils se font rattrapper par la réalité des coûts cachés :D

Près de 76000 entreprises sont aujourd’hui impliquées dans les Systèmes Embarqués en France d'après l'étude. Hé bien je ne suis pas prêt d'avoir fini ma liste ! Mais on y trouve toujours autant de SSII :(

Emplois

95% des postes à pourvoir en systèmes embarqués sur l’APEC le sont en CDI. En effet, je n'ai jamais entendu parler de CDD dans le secteur. a part à l'ANSSI. Mais c'est un cas particulier !

Sinon le marché a l'air de s'améliorer pour les ingénieurs en informatique.

Marché

Bref ! L'étude est assez conséquente voir presque indigeste à lire d'un coup, mais est vraiment intéressante lorsque l'on évolue dans ce secteur.

Vous pouvez retrouver tous les PDF sur le site du Fafiec.

]]>
adb pour les produits non Android http://www.yoannsculo.fr/adb-produits-non-android 2014-07-03 http://www.yoannsculo.fr/adb-produits-non-android Lorsque l'on travaille sur des produits embarqués d'électronique grand public, débugger et développer peut s'avérer particulièrement fastidieux. Les besoins du développeur sont généralement assez basiques, avoir une console et être en mesure de déposer / récupérer des fichiers. En pratique cela peut s'avérer particulièrement lourd. Généralement, voici les possibilités s'offrent à nous :

  • La console UART
  • La console USB
  • Le réseau (ssh, telnet, NFS)
  • Le support de stockage (USB, carte SD, ...)

Chacune possède des avantages et inconvénients. Une nouvelle solution avec pas mal d'avantages est maintenant envisageable, adb.

ADB (Android Debug Bridge)

Android vient avec un petit utilitaire bien pratique de debug, adb (Android Debug Bridge). Il permet, entre autres, d'ouvrir un shell via USB ou TCP et de transférer des fichiers. C'est ce qui m'intéresse ici. Avec l'USB, on bénéficie d'un meilleur débit qu'à 115200 bauds via la console physique, et son usage est déconcertant de facilité. On branche l'USB et on tape adb shell dans une console de la machine HOST. Pas besoin de démonter le produit, d'y souder des fils qui vont s'arracher au fur et à mesure des manips. Plus besoin d'effectuer des transferts de fichiers par carte SD ou par le réseau. Bref, un énorme gain de temps pour le développeur.

Fonctionnement d'adb

fonctionnement d'adb

adb est une application client-serveur qui se décompose en trois éléments :

  • Un serveur : qui tourne en tâche de fond sur votre machine HOST, il se comporte comme une sorte de proxy
  • Un client : qui se lance sur la machine HOST et se connecte au serveur. On peut en lancer plusieurs en même temps.
  • Un daemon adbd : qui tourne sur la target et va exécuter les commandes lancées par le HOST.

Celui qui m'intéresse ici c'est le daemon adbd, côté target, et non adb côté host (PC). On trouve bon nombre de projets qui proposent la compilation d'adb côté host, mais ces derniers délaissent systématiquement adbd. La raison est simple, la mode est à Android et adbd est déjà packagé dans AOSP. L'industrie met de l'Android partout à toutes les sauces. Les bon vieux Linux embarqués n'héritent pas forcément d'outils sympa apportés par la déferlante Android. Ainsi adb va de soi pour les développeurs qui font de l'embarqué sur Android. Sauf qu'il subsiste des gens, comme moi, développant des produits qui ne tournent pas sous Android, et qui gagneraient à utiliser adb.

L'idée initiale de porter adbd pour des produits non Android vient de mon ancien collègue Guillaume Revaillot, qui avait déjà effectué le portage il y a deux ans. Sachant que c'était faisable, je me suis donc attelé à la tâche pour le rendre open source. A première vue, cela peut sembler incongru de mettre un daemon "Android" dans un produit qui ne l'est pas, mais les avantages sont multiples. Il serait dommage de s'en priver !

L'activation d'adb/adbd se fait à deux endroits:

  • dans le kernel
  • en userspace

Côté kernel

Nous avons besoin du driver Gadget Android (option CONFIG_USB_G_ANDROID). Ce dernier ne semble pas vouloir compiler autrement qu'en builtin dans ma version actuelle du kernel.

Pour ma part, la config du USB_G_ANDROID a hérité d'une dépendance à l'option SWITCH dans drivers/usb/gadget/Kconfig, je me suis contenté de la supprimer. J'explorerai à l'occasion cette piste pour comprendre la raison de son existence et l'impact de la suppression du depends on SWITCH

diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index 26ab1e3..2985fe1 100755
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -963,7 +963,6 @@ config USB_G_PRINTER

 config USB_G_ANDROID
        boolean "Android Gadget"
-       depends on SWITCH
        help
          The Android gadget driver supports multiple USB functions.
          The functions can be configured via a board file and may be

Ce driver apporte diverses fonctionnalités

  • adb : Android Debug Bridge
  • acm : (Abstract Control Model) pour émuler du RS232 par USB
  • mtp : transfert de fichiers
  • ptp : transfert de fichiers
  • rndis : tethering
  • mass_storage : transfert de fichiers
  • accessory : Android USB accessories

Ce qui m'intéresse ici c'est adb et le mass storage. Car en définitive, le module Gadget Android remplace le module classique File-backed Storage Gadget de mass storage en rajoutant de nouvelles options. Perso je n'ai pas besoin du reste, on pourrait même envisager de désactiver des pans entiers du driver pour ne garder qu'adb et le mass storage. J'ai vu dans le driver que le défrichage serait assez simple.

Côté userspace

Le code source d'Adb se trouve dans le core d'AOSP. Il est intégré au processus de build d'Android et se compile grâce aux Android.mk Bien que proches des GNU Makefiles, les Makefiles d'Android n'en sont pas, et la compilation d'adb avec des GNU Makefile nécessite leur réécriture.

J'ai forké le core :

https://android.googlesource.com/platform/system/core.git

et ai légèrement bricolé le code pour permettre la compilation via un GNU Makefile. Je n'ai pas énormément de mérite, je me suis fortement inspiré du travail de cette personne.

Vous pouvez retrouver le code source sur github.

Il y a juste à se rendre dans le dossier adb, d'exporter vos variables d'environnement pour votre toolchain et openssl

export TOOLCHAIN=<your_toolchain_path_with_prefix>
export OPENSSL_DIR=<path_to_openssl>

et faire un make.

J'ai initialement commencé sur la toute dernière branche d'Android. adb est tellement imbriqué dans le code spécifique à Android que le portage est une horreur. J'ai remonté le temps et me suis placé sur la branche gingerbread, ce qui correspond à la version 1.0.26 d'adb. Le portage a été bien plus simple. Dès que j'aurai plus de temps, je tâcherai de remonter la timeline d'Android pour fournir un adbd plus récent. En attendant, cela fonctionne. Mis à part un gros bug sur lequel je ne me suis pas encore penché. Lorsque l'on tente de transférer un dossier de façon récursive, et que l'on atteint une certaine taille (semblerait-il) le daemon adbd explose et la connexion s'interrompt. Je suis carrément preneur d'aide la dessus ;)

Utiliser adb

Une fois adbd intégré à la target, les choses intéressantes commencent. La configuration du driver se fait via sysfs. Alors bien évidemment, si l'on ne souhaite pas trop se prendre la tête, on peut indiquer tout en dur dans le driver ou via des platform data. Ce qui évite d'avoir trop de bricolages à faire à l'init. J'ai choisi l'option sysfs histoire d'expliquer à quoi servent les différents champs.

La première étape est de démarrer adbd

ifconfig lo up
adbd &

Je n'ai pas encore trop cherché la raison exacte, mais l'interface de loopback est nécessaire. Sinon pas content le adbd ! Ensuite, la configuration d'adb se fait de la façon suivante :

echo 0 > /sys/devices/virtual/android_usb/android0/enable
echo 18d1 > /sys/class/android_usb/android0/idVendor
echo 1 > /sys/class/android_usb/android0/idProduct
echo "MyCompany" > /sys/class/android_usb/android0/iManufacturer
echo "MyProduct" > /sys/class/android_usb/android0/iProduct
echo "0123456789" > /sys/class/android_usb/android0/iSerial
echo "adb" > /sys/class/android_usb/android0/functions
echo 1 > /sys/devices/virtual/android_usb/android0/enable

J'ai gardé 0x18d1 comme VendorId. C'est celui de Google. Je n'ai pas essayé de changer, mais une fois le service adbd le produit apparaît comme un périphérique Google. (cf résultat d'un lsusb)

Bus 002 Device 097: ID 18d1:0001 Google Inc.

Par contre, l'usb énumérera un périphérique custom tout mignon à votre nom :)

[286392.560081] usb 2-1.5.1.2: new high-speed USB device number 97 using ehci-pci
[286392.652892] usb 2-1.5.1.2: New USB device found, idVendor=18d1, idProduct=0001
[286392.652897] usb 2-1.5.1.2: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[286392.652900] usb 2-1.5.1.2: Product: MyProduct
[286392.652903] usb 2-1.5.1.2: Manufacturer: MyCompany
[286392.652905] usb 2-1.5.1.2: SerialNumber: 0123456789

Et pour couper le service :

echo 0 > /sys/devices/virtual/android_usb/android0/enable
killall -9 adbd
echo "" > /sys/class/android_usb/android0/functions

Utiliser le mass storage

Pour le mass storage, la manipulation est similaire :

echo 0 > /sys/devices/virtual/android_usb/android0/enable
echo 525 > /sys/class/android_usb/android0/idVendor
echo 1265 > /sys/class/android_usb/android0/idProduct
echo "MyCompany" > /sys/class/android_usb/android0/iManufacturer
echo "MyProduct" > /sys/class/android_usb/android0/iProduct
echo "0123456789" > /sys/class/android_usb/android0/iSerial
echo "mass_storage" > /sys/class/android_usb/android0/functions
echo "/dev/<...>" > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun/file
echo "/dev/<...>" > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun1/file
echo 1 > /sys/devices/virtual/android_usb/android0/enable

ou "/dev/<...>" est votre partition à exporter en mass storage. Ici je peux exporter une seconde partition (carte SD par exemple) sur lun1.

Ce qui nous donne l'énumération suivante

[286815.281120] usb 2-1.5.1.2: USB disconnect, device number 97
[286820.341156] usb 2-1.5.1.2: new high-speed USB device number 98 using ehci-pci
[286820.433975] usb 2-1.5.1.2: New USB device found, idVendor=0525, idProduct=1265
[286820.433980] usb 2-1.5.1.2: New USB device strings: Mfr=2, Product=3, SerialNumber=4
[286820.433982] usb 2-1.5.1.2: Product: MyProduct
[286820.433985] usb 2-1.5.1.2: Manufacturer: MyCompany
[286820.433987] usb 2-1.5.1.2: SerialNumber: 0123456789

et pour couper le mass storage

echo 0 > /sys/devices/virtual/android_usb/android0/enable
echo "" > /sys/class/android_usb/android0/functions
echo "" > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun/file
echo "" > /sys/devices/virtual/android_usb/android0/f_mass_storage/lun1/file

Je ne suis pas sûr que les echo "" soient vraiment fonctionnels/nécessaires. Il faudrait que je vérifie leur utilité.

Utiliser adb et le mass storage en même temps

Cette option est possible, et est censée fonctionner de la façon suivante :

echo "adb,mass_storage" > /sys/class/android_usb/android0/functions

mais j'avoue avoir eu des soucis pour faire marcher ça sous Windows ET Linux à cause des product et vendor id. J'explorerai ça à l'occasion, mais Android le fait donc ce n'est qu'une question de configuration à priori.

Conclusion

Tout ça marche super bien sous Linux. Sous Windows c'est tout de suite plus tricky. J'ai rencontré les mêmes soucis qu'il y a quelques années. La configuration précédente marche sous Windows seven, j'ai pas testé plus loin pour le moment.

J'ai utilisé le vendor id de Netchip Technology pour déclarer comme mass storage (0x0525/0x1265). S'il y a une façon plus propre, je suis preneur :)

Sous Windows, trouver des drivers adb est assez pénible. J'ai trouvé le site adbdriver.com, site qui fait franchement peur tellement ça sent le malware à plein nez. Le hic c'est que ça marche ! Je n'ai pas trouvé d'autre source plus fiable. Donc je suis preneur si jamais vous avez des trucs qui inspirent plus confiance. D'un autre côté, si vous êtes quelqu'un de normal, vous développez sous Linux pour une target Linux. Le problème ne devrait donc pas se poser :D

A noter que le mass storage et adb correspondent à 2 fonctionnements distincts et donc à deux drivers.

Et voilà ! Maintenant adb fonctionne comme un périphérique Android.

adb devices retournera la valeur indiquée dans le fichier iSerial. Tout beau tout propre.

List of devices attached 
0123456789  device

adb shell vous donnera un shell tout mignon par USB sans avoir à charcuter le casing de votre produit :)

N'hésitez pas à me faire part de vos remarques/critiques. Et je suis également preneur de pull requests ;)

]]>
Fosdem 2014 http://www.yoannsculo.fr/fosdem2014 2014-02-09 http://www.yoannsculo.fr/fosdem2014 Fosdem 2014

J'étais au Fosdem 2014 le week-end dernier. Bien épuisant, mais toujours aussi intéressant ! Comme l'année dernière, niveau conférences c'était parfois très inégal. Il y a du très bon comme du pas franchement passionnant, ni préparé. Rageant lorsque l'on doit faire un choix entre plusieurs présentations se déroulant en même temps. Mais parlons plutôt de ce qui m'a plu !

Firefox OS

Firefox OS attire du monde ! J'ai commencé les talks samedi par une conférence Firefox OS. La salle était bien remplie.

State of Firefox OS

J'étais curieux de savoir où en était Firefox OS, car j'ai hâte de quitter Android. Fabien Cazenave nous a expliqué que les efforts de Mozilla n'étaient pas centrés sur le portage de Firefox OS sur les téléphones actuels. Mais plutôt sur le développement de leurs propres produits pour les marchés émergents. De la même façon, Mozilla ne s'intéresse pas aux tablettes pour le moment, mais compte sur la communauté pour l'aider. Ils vont proposer dans les semaines qui viennent un programme incitant les développeurs volontaires à participer à l'effort de guerre sur tablette, en fournissant du matériel aux motivés.

J'ai pu à nouveau m'amuser avec un téléphone ZTE, si je ne m'abuse. Bon, le hardware ne vend vraiment pas du rêve, mais le système a tout ce dont j'aurais besoin sur un téléphone. Mon prochain smartphone tournera sous Firefox OS je l'espère ! Il va juste falloir encore attendre un peu.

Jenkins

J'ai mis en place Jenkins au travail, mais ne l'utilise qu'à 10 % de ses capacités. Je me posais un certain nombre de questions pour utiliser toute la puissance de l'outil. Ça tombe bien, j'ai pu demander directement aux développeurs ! :)

LAVA

LAVA

Dans le même esprit que Jenkins, j'ai découvert le projet LAVA de Linaro. C'est un framework en Python qui permet de faire du test et de l'intégration continue sur du hardware.

Exactement ce dont j'aurais besoin ! J'ai bon espoir de pluger cet outil sur mon Jenkins et mon projet en cours de développement afin de me faire un système de build et de qualif du tonnerre ! Je vais regarder ça en détails dès que j'ai un peu de temps.

Energy consumption

Mon dimanche a débuté sur des conférences axées sur la consommation d'énergie, et les techniques pour la mesurer de façon précise et peu intrusive.

Energy consumption

Leurs propos portaient sur le fait que les développeurs software, contrairement aux gens du hardware, ne sont pas habitués à penser « consommation d'énergie ». On nous a alors présenté le projet open source MAGEEC, ayant pour premier axe de travail l'optimisation de la compilation à des fins d'économie d'énergie. Le second aspect du projet est le développement d'une board open source de mesure de consommation, que voici :

MAGEEC

J'aurais beaucoup aimé me rendre au workshop l'après midi, et repartir avec une board. Mais j'ai choisi d'aller voir du côté d'Allwinner.

Allwinner

Je me suis senti tout de suite moins seul après la présentation d'Olliver Schinagl ! Allwinner fait de l'open source, mais en pratique la qualité des livrables est tellement mauvaise que le travail des développeurs devient un enfer. Sans compter toutes les problématiques de blobs et de non respect des licences GPL. J'ai découvert, avec soulagement, que je n'étais pas le seul à pester et que la communauté sunxi, autour des processeurs Allwinner, avait les mêmes problèmes que moi. Leur wiki m'avait beaucoup aidé cet été, mais je pense aller bientôt discuter directement avec eux. Leur code semble être en avance de phase sur le code fourni par Allwinner. Que cela soit sur le bootloader et le kernel. Ô joie !

Vidéos

Vous pouvez retrouver les vidéos des présentations en ligne. Toutefois, je n'ai pas de son sur les vidéos. Je ne sais pas si ça vient de chez moi où s'il y a un soucis d'encodage.

]]>
ParisEmbedded n°3 - Petit compte-rendu http://www.yoannsculo.fr/retour-paris-embedded-3 2014-01-26 http://www.yoannsculo.fr/retour-paris-embedded-3 Paris Embedded

Mieux vaut tard que jamais. Je me suis rendu à la troisième édition de ParisEmbedded le 7 janvier dernier. Cette fois-ci, j’avais prévu une présentation / retour d’expérience sur les interactions avec la Chine dans mon métier d’ingénieur linux embarqué. Et notamment toutes les problématiques que l’on rencontre à cause des différences culturelles et techniques, de la distance, etc.

Joshfire a filmé les présentations. Soyez indulgents, c’était ma première présentation en anglais depuis un paquet d’années ^^

Manufacturing in China, what the hell ! - Yoann Sculo

Slides de la présentation - Vidéo de la présentation

Martin Bonnin a ensuite présenté des techniques de bricolage de PCB à la maison. Je n’ai pas non plus de super souvenirs avec le perchlo :P Mais j’avoue que j’opterais aujourd’hui pour le PCB fait sur mesure en Chine.

Building your circuit boards at home - Martin Bonnin

Slides de la présentation - Vidéo de la présentation

Suivi d’une présentation très intéressante de Benjamin Joffe, qui retrouve les mêmes problématiques que moi en Chine. Il nous a parlé de HAXLR8R, son incubateur de startups hardware. Et comment il aide ces startups à faire les bons choix et éviter les pièges là bas.

Lean Hardware 101 - Benjamin Joffe

Slides de la présentation - Vidéo de la présentation

Et pour finir, Maurice Svay nous a parlé de sa dernière acquisition, le Spark Core. Petite carte de dev wifi, programmable à distance sur un IDE web.

(désolé, je n'ai pas de photo)

Slides de la présentation - Vidéo de la présentation

Comme d’habitude, c’était super intéressant. C’est toujours l’occasion de revoir plein de monde et rencontrer de nouvelles personnes. Bref toujours un plaisir de venir !

Merci encore à Joshfire et merci à Robert Salita pour ses photos.

]]>
Carte de fidélité et vie privée http://www.yoannsculo.fr/carte-fidelite-vie-privee 2014-01-02 http://www.yoannsculo.fr/carte-fidelite-vie-privee J'ai reçu récemment ce courrier. Oh la jolie publicité Leffe qui a failli finir direct à la poubelle !

Publicité ciblée

Sauf ... qu'en la lisant (j'avoue que je j'ai mordu à l'hameçon), j'ai réalisé que la publicité était ciblée. Et surtout qu'elle était basée sur le fait que j'ai déjà acheté des bières Leffe avec ma carte de fidélité Cora. Alors bon, savoir que j'aime les bières belges n'est pas franchement de la donnée sensible.

Mais savoir que le magasin connaît exactement le détail de tous mes achats et peut anticiper mon comportement de consommateur est tout de même dérangeant. J'avoue ne pas avoir fait particulièrement attention aux conditions en prenant la carte. A vrai dire c'est la base du business modèle de la carte de fidélité ...

Et en lisant les petits caractères :

Certaines données pourront être transmises à des prestataires qui réaliseront certaines opérations techniques pour le compte de cora. Nous vous garantissons que tous les moyens sont mis en oeuvre pour garantir la plus grande confidentialité et intégrité des données que vous nous confiez.

ça ne me rassure pas des masses.

En fait, c'est bien sympa d'avoir quelques euros de réduction de temps en temps, mais être complètement espionné sur ses habitudes de consommation me dérange.

Je ne m'étais jamais réellement posé la question. Mais dans une certaine mesure, c'est exactement comme pour Google, Facebook et compagnie. On nous fournit un service cool et gratuit sans trop se soucier de la contre partie. Et là clairement, le produit c'est nous !

Et tant que l'on ne peut pas matérialiser les données privées sauvegardées c'est assez difficile de se rendre compte du système caché derrière.

Merci Cora de m'avoir envoyé cette pub pile au moment où je commençait très sérieusement à me soucier de ma vie privée. Je vais donc songer à me désinscrire.

]]>
Quelques précisions sur ma liste de SSII http://www.yoannsculo.fr/quelques-precisions-sur-ma-liste-de-ssii 2013-12-30 http://www.yoannsculo.fr/quelques-precisions-sur-ma-liste-de-ssii Je répertorie depuis un moment toutes les sociétés assimilées SSII / ESN. J'en ai fait un repository public sur github, que je mets à jour régulièrement. On peut retrouver également cette liste (plus rarement actualisée) sur mon blog. Cette liste de SSII, ainsi que celle des sociétés liées à l'embarqué, me génère une bonne partie du trafic de mon blog.

Et dans ces visites, il y a des recruteurs et commerciaux de SSII. J'ai été contacté à plusieurs reprises afin que je retire leurs sociétés de la liste. Ces sociétés m'indiquant ne pas être vraiment des SSII. Alors que faire ? Quels sont les critères de la liste ?

Plus j'avance dans le monde professionnel, plus je réalise que le marché du travail est complexe. Que le monde n'est pas manichéen (qui l'eut cru ?). Ma position initiale de la SSII = « mal absolu » a bien changé depuis que je suis sorti de l'école. J'ai même dû recruter cette année et j'ai démarché des SSII pour cela. A vrai dire, on trouve de tout dans les SSII. Du très mauvais comme du très bon. J'ai même envisagé d'en rejoindre une il y a un an après mon dernier licenciement économique. Bref, tout ça pour dire que mon discours a changé.

A titre personnel, je peux et préfère éviter travailler en SSII. En tant que «client » qui a eu besoin de recruter quelqu'un pour agrandir mon équipe temporairement, je réalise que c'est tout de même un mal nécessaire.

L'intérêt

J'ai constitué cette liste car j'ai toujours souhaité travailler directement chez des industriels pour faire de l'embarqué. Pas au sein de sociétés de service, au sens étymologique du terme.

Chercher du travail avec une telle contrainte est une plaie lorsqu'il s'agit de consulter des job boards. Les offres de SSII cachent l'essentiel des offres d'emploi d'industriels. Cette liste avait donc pour but, à terme, d'en faire un mécanisme de filtrage pour les sites d'offres d'emploi. Pour me faciliter mes propres recherches. Tout simplement.

Mon projet Jobcatcher est d'ailleurs l'aboutissement de cette liste. Je peux filtrer les offres d'emploi à la recherche d'industriels et d'éditeurs de logiciels.

Les critères

Dans l'échange que j'avais eu suite à cet article, j'avais tenté de lister les critères permettant d'y faire figurer une société. Mais je me suis un peu fourvoyé dans ma tentative d'explication.

Comme je l'expliquais précédemment, on peut trouver du très bon comme du très mauvais. Et il est en effet assez réducteur de mettre tout le monde dans le même panier sans pouvoir en saisir les subtilités. Toutefois, mon but n'est pas de trier les sociétés de service, ni de juger leur qualité ou bien leur culture d'entreprise.

Je préfère donc garder cette liste la plus objective possible et y faire figurer simplement et uniquement toutes les sociétés de service, au sens étymologique du terme, qui fournissent un service via des consultants. Quand bien même elles fonctionneraient en partie ou intégralement au forfait. Cette liste se veut la plus objective possible et a pour seul but de lister de façon neutre toutes les sociétés de services de France.

Les gens seront libres de faire la part des choses au sein de cette liste. Je n'ai malheureusement ni le temps, ni l'envie de faire la distinction entre les bonnes et mauvaises SSII. D'autant plus que ce n'est pas la qualité qui m'intéresse ici mais le mode de fonctionnement de la société (service en opposition à l'industrie).

Pour information, j'ai placé toutes mes listes sous licence Creative Commons autorisant le partage et la modification sous conditions (CC BY-SA 3.0) ou au choix, la version française (CC BY-SA 3.0 FR)

]]>
ParisEmbedded n°3 http://www.yoannsculo.fr/parisembedded3 2013-12-27 http://www.yoannsculo.fr/parisembedded3 Paris Embedded

Long time no see ! Le meetup ParisEmbedded revient le 7 janvier prochain. C'est toujours à Joshfire. Et cette fois-ci j'ai proposé de faire une présentation :

« Manufacturing in China, what the hell ! »

L'idée est de faire un petit retour d'expérience sur la production de produits d'électronique grand public en Chine. Et surtout les spécificités et problématiques bien particulières que l'on y rencontre. Tout ça du point de vue de l'ingénieur Linux embarqué que je suis.

Pour les inscriptions, il y a encore pas mal le place.

]]>