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-07-15T00:00:00Z fr hourly 1 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.

]]>
What about an open source manufacturing software for the consumer electronics industry? http://www.yoannsculo.fr/what-about-open-source-manufacturing-software-consumer-electronics-industry 2013-11-07 http://www.yoannsculo.fr/what-about-open-source-manufacturing-software-consumer-electronics-industry What I do

I have worked for 3 different companies that produce and sell consumer electronics devices with Linux as their operating system. Part of my job for the last 4 years has been to develop and maintain custom Linux systems that test and validate hardware in production. First, I need to check IC soldering, connectivity and global quality of the PCB assembly. Then I have to make sure the embedded software is properly running. This way, we can ensure the product is fully functional.

There are plenty of elements to test, for instance that touchscreens, GPS, buttons, connectors, etc. are responding. If those tests detect a problem, the device can be reworked before the end of production line. Believe me, you don’t want to manually rework tens of thousand devices later in your warehouse. Or worst, discover a hardware issue once the product is sold to the customer. This is part of the quality process. Mass recall is your worst company’s nightmare.

Another aspect of my job is to inject data into the device during production. Serial numbers, mac addresses, PCB and components revisions/versions and even marketing content.

Observation

Every time I changed job, I found a new home-made system. Either I had to maintain an existing project or I had to build a new one from scratch.

Recently I changed job and inherited a new home-made system to maintain. At this point I just realized we (embedded linux developers) were developing the same thing again and again. When I started to ask other engineers around me I understood many people were doing the same thing. With many levels of complexity, from the quick and dirty shell script to an elaborate GUI with full interactive interface.

Therefore I started to search for an open source project that could do the work. I didn't find anything: unfortunately, there are so many features and bricks that I need I never find together in the same software.

Today I'm wondering if there are other people like me with the same need. I would be glad to contribute to an open source project if I could find one. But actually, it seems that such a software doesn't exist... yet!

So, here is the idea: what about a generic, lightweight and customizable manufacturing software for production and PCB assembly? It could be even used for tests during development or to easily find/locate bugs.

What I need

Here is what I have in mind. The ideal software I’d love to use on a daily basis.

Features

  • Manual or automatic hardware tests in production to validate PCB and PCB assembly (PCBA)
  • Manual or automatic software tests in production to validate the embedded firmware.
  • Standardized test reports
    • Standardized protocol to communicate with an external computer (USB/RS232)
    • To store data such as serials, mac addresses, marketing content, etc. (with protections against viruses)
    • To retrieve data such as test reports
    • To control and remotely run diagnostics / tests from an external computer.
  • Universal interface for all possible devices :
    • framebuffer console interface for devices with a screen
    • feedback with led for devices without screens
    • remote control for devices without human-readable outputs
  • Development / diagnostics features
    • Energy consumption tests and measurement
    • Whiteboard tool (to draw on the screen and test touchscreens)
    • RAM tests with memtester to stress test new RAM chips
    • Certification tests such as CE / FCC / ...

Hardware tests

A sample list of possible tests to offer

  • net
    • wifi / calibration
    • bluetooth
    • ethernet
  • sensors
    • gps
    • accelerometer
  • input
    • button
    • touchscreen / calibration
    • camera
  • output
    • led
    • mic
    • jack
    • speakers
  • display
    • screen
      • tft/lcd screens
      • e-paper screens
    • hdmi connector
  • storage
    • sd card
    • mmc
    • mass-storage
    • eeprom
  • misc
    • usb-port (detection, charge, …)
    • i2c (chip enumeration/detection)

Let’s do it!

I really don't know if this kind of application would be helpful to big companies. But from what I saw, small companies that produce hardware could need such a software. So people like me could focus on something else than writing crappy scripts/code to test hardware. I'm the only embedded Linux developer in my company, and I have to handle so many things / projects that having a powerful tool that eases my work would be great! We could benefit from everyone's work and have a very powerful generic tool. (like u-boot, buildroot, etc.)

Feel free to tell me what do you think about this idea! Especially if you could have such a need. And please, tell me if you think it's a bad idea! Or if you know something that already does the job! I guess it could be very useful to developers like me, working in the consumer electronics industry.

]]>