Mai 2004 par Stéphane Cazat
3.16/5 (2 votes)

Des logiciels libres au coeur de vos platines DivX !

N’est il pas frustrant d’avoir une platine DivX parfaite à 90% et les 8% qui restent sont juste des problèmes logiciels ?

Cet article essaye de faire un point sur les possibilités et les conséquences d’avoir un firmware ouvert, les techniques de « reverse engineering » et les trésors de la « communauté open source » seront exposés

Article publié dans le cadre
du troisième concours de contribution
Auteur : rzr
(voir les autres contributions du concours)

Partons des constats suivants,

  • Il existe peu d’ouverture dans le matériel électronique domestique,
  • Techniquement, il est tout à fait possible de ’hacker’ ce matériel,
  • un modèle économique est peut être sous-jacent (cf Software pour Mobile),
  • Les fabricants ont des stratégies floues quant au respect des solutions Libre ?

Certains penseront que le marché des lecteurs multimedia de salon n’a rien a voir avec celui de la micro, comme faisait remarquer le PDG de GM à Bill Gates « qui veux d’une voiture où il faut presser le bouton démarrer pour l’arreter ? », soit.

D’autres firmes ont eu une autre stratégie, par exemple les téléphones mobiles actuels sont relativement ouverts, les contructeurs proposent la possibilité d’installer des programmes de sources diverses, la documentation nécessaire et même des SDK dans des langages de programmation usuels.

Ainsi, en quelques semaines il m’a été possible de développer une démo d’un moteur 3D (j’entends déjà les developpeurs pester « quoi ? du java pour decoder des videos ? » )

Okay, je recentre le débat :

  • les standards changent de plus en plus vite,
  • la mise au point d’un matériel ne peut qu’être en décalage avec le progrés des techniques,
  • le marché ne suit pas toujours aussi vite.

Il est donc plus que logique que le logiciel doivent évoluer, même lorsque le matériel est figé.

Mais le logiciel doit évoluer VITE, sinon le materiel deviendra obsolete, et la concurrence sera rude sur les nouveaux marchés.

Le logiciel ne peut pas évoluer de facon fulgurante si cette tache est attribuée aux fabricants de chipsets, autre acteur dans la chaine du producteur au consommateur.

LA COMMUNAUTE

Qui va donc travailler ?

Nous, ou du moins les gens qui pensent que cela en vaut le coup,
Donc personne ? pas si sûr, la communauté des hackers (au sens experts et non pirate) même si elle est minime, est très active.

Cela a été le cas du support de GNU/Linux sur materiel de type PC, en moins de 10 ans la majorité du materiel sur le marché est supporté par du logiciel libre (logiciel+os+drivers+bios).

La communauté libre est donc à gracier, mais il faut garder à l’esprit que la quantité de travail repose sur l’accés à l’information des spécifications.

REVERSE ENGINEERING

Certains constructeurs de Cartes Video 3D ne veulent pas donner ces specifications et se chargent de développer eux même les modules pour une utilisation avec du logiciel libre, les raisons évoquées sont de différentes natures, souvent il a été dit qu’a partir du driver on peut exposer des secrets de fonctionnement qui pronent sur la concurrence.

Bloqué ? Non, dans ce cas là, l’activité de reverse engineering prends le relais, il s’agit d’espionner le systeme pour en comprendre son fonctionnement.

Est ce légal ? un juriste sera plus compétant pour répondre à la question,
néanmoins, il a été énoncé que dans un soucis d’interopérabilité c’est toléré.

Pour mieux comprendre étudions un player de dvd divx basé sur le chip de SigmaDesign (cf Annexe)

Certains curieux ont fait la même démarche que celle expliquée et ont réclamé au fabricant KISS le respect de la licence des logiciels OpenSource (à savoir accés libre au code source).

FIRMWARE LIBRE

Finalement le code source a été publié conformément à la licence, avec une note d’excuse et un encouragement pour la communauté des logiciels libres.
http://www.sigmadesigns.com/product...

Ainsi certains malins espere ajouter le support d’autres logiciels et formats de decompression pour ce modele.

Le travail est en cours, et espérons qu’un firmware libre (et fiable) voit le jour bientot.

Quel serait l’apport d’un « Firmware Libre » ?

  • d’une part le support des fonctionnalités manquantes de la version non libre
    (support des formats émergents libres ou non : OGG Matroska etc)
  • Une interface utilisateur plus flexible selon les préférences de chacuns,
    (par exemple ne trouvez vous pas frustrant de devoir allumer votre TV pour pouvoir selectionner votre répertoire de musiques preférées ?)
  • beaucoup plus fun : le support de minis jeux et autres applications (libsdl.org)

INTERET ECONOMIQUE ?

Le logiciel libre est effectivement une source de satisfaction pour les utilisateurs, les développeurs, mais en est-il de même pour les industries ?

Effectivement les modèles économiques viables basés sur du logiciel libre ne sont pas majoritaires, mais cela est possible et même parfois plus intéressant sur plusieurs points de vue.

La notion de service est souvent évoquée lorsqu’on parle de logiciel libre et d’entreprise, pour ce qui est du matériel ceci est déja plus difficile.

Mais sans parler de projet de matériel 100% libre, la plupart des fabricants de cartes pour ordinateurs donnent suffisamment d’information pour leur utilisation dans des environnements variés et non un seul standard arbitraire.

Ceci est déjà d’actualité, car certains développeurs de platines de DVD/DIVX ont fait le choix d’utiliser du lociciel libre.

Il est donc logique que la tendance aille à la libération des firmwares.

Raisons valables pour libérer le code source (des firmwares en l’occurrence ) :

Communautaires :

  • fidéliser les communautés (clients) « éthiques »
  • participation au développement, test, documentation
  • être à l’écoute des besoins, tendances ...

Techniques :

  • Utilisation du code Libre réduit le coût de développement, test, doc...
  • agrandit les possibilités d’interopérabilité (ports etc)
  • assurer le futur en assurant le support des normes et les technos présentent dés le jour de la mise sur le marché du materiel (IE codecs)

Juridiques :

  • Eviter les attaques juridiques en cas de viols de licences (cf Sigma Design et ses [ARM] , kiss)
  • Protection des innovations en publiant les éléments potentiellement brevetables par une mutinationale ayant son activité en R&D qui se traduit par le dépôt massif de brevet.

CONCLUSION

Tôt ou tard, les fabricants « indépendants » seront amenés à travailler en collaboration avec les communautés de développeurs.

Cette stratégie peut assurer leur survie.

Par exemple pour les lecteurs basés sur l’excellent chipset Mediatek, esperons que les prochaines mise a jour de firware supporterons le format OGG & OGM (specialement pour l’un des meilleurs modèles du marché le H&B DX3220).

Par ailleurs certains développeurs opensource mettent au point des systèmes libres basés sur du logiciel déjà existants.

Les prototypes les plus aboutis sont souvent basés sur une architecture type PC embarqué (processeurs faibles consommation et dégageant peu de chaleur).

Le dernier point consiste à passer l’étape d’industrialisation du produit (tout en concervant son ouverture) : les premiers arrivés seront les premiers servis.

D’un point de vue personnel, je suis convaincu que « l’ouverture » est un facteur à prendre en compte dans le marché du matériel multimédia domestique.

ANNEXE : TECHNIQUES

Beaucoup d’encre (ou d’octet) a été versée sur l’affaire « Kiss vs mplayer ».

par exemple le DP-1000.

1/ Récupérons la mise à jour du firmware à : http://www.kiss-technology.com/file...

# file KiSS*.iso
KiSS DP-1000 Firmware 2.8.5 PAL.iso : ISO 9660 CD-ROM filesystem data ’KiSS DP-1000’ (bootable)

Le fichier zip contient une image de cdrom bootable, celle ci est lue sous n’importe quel cdrom.

# mount -t iso9660 -o loop K*.iso /mnt/tmp
# ls -l /mnt/iso/
total 2102
-r-xr-xr-x    1 root     root           26 2004-01-22 12:35 Autorun.inf
dr-xr-xr-x    1 root     root         2048 2004-03-16 19:03 bin
dr-xr-xr-x    1 root     root         2048 2004-03-16 19:03 cdrom
dr-xr-xr-x    1 root     root         2048 2004-03-16 19:03 dev
-r-xr-xr-x    1 root     root        13593 2004-03-24 10:33 fipmodule.o
dr-xr-xr-x    1 root     root         2048 2004-03-16 19:03 img
-r-xr-xr-x    1 root     root       349919 2004-03-24 10:33 khwl.o
-r-xr-xr-x    1 root     root         2238 2003-02-17 18:03 kiss.ico
-r-xr-xr-x    1 root     root        10206 2004-03-24 10:33 kiss_khwl.o
-r-xr-xr-x    1 root     root          108 2004-03-24 10:36 layout.txt
-r-xr-xr-x    1 root     root        14980 2004-03-24 10:33 loader.bin
-r-xr-xr-x    1 root     root      1751040 2004-03-24 10:33 romfs.bin

Cela ressemble a une architecture unix (dev, *.o)

#file romfs.bin
romfs.bin: romfs filesystem, version 1 1750960 bytes, named rom 406147d1.

Un système de fichier en ROM

# mount -o loop romfs.bin /mnt/romfs
# ls -l /mnt/romfs/
total 1040
drwxr-xr-x    1 root     root           32 1970-01-01 01:00 bin
drwxr-xr-x    1 root     root           32 1970-01-01 01:00 cdrom
drwxr-xr-x    1 root     root           32 1970-01-01 01:00 dev
-rwxr-xr-x    1 root     root       303561 1970-01-01 01:00 fileplayer.bin
-rw-r--r--    1 root     root        13593 1970-01-01 01:00 fipmodule.o
drwxr-xr-x    1 root     root           32 1970-01-01 01:00 img
-rw-r--r--    1 root     root       349919 1970-01-01 01:00 khwl.o
-rw-r--r--    1 root     root        10206 1970-01-01 01:00 kiss_khwl.o
-rw-r--r--    1 root     root       325064 1970-01-01 01:00 linux.bin.gz
-rwxr-xr-x    1 root     root        54724 1970-01-01 01:00 mpegplayer.bin
drwxr-xr-x    1 root     root           32 1970-01-01 01:00 proc

# file linux.bin
linux.bin: data

# zcat /mnt/romfs/linux.bin.gz | hexdump -C | head
00000000  00 c0 a0 e1 05 26 a0 e3  0c 10 92 e5 01 10 81 e3  |.À á.& ã...å...ã|
00000010  0c 10 82 e5 b9 10 a0 e3  13 00 a0 e3 00 f0 21 e1  |...å¹. ã.. ã.ð!á|
00000020  25 00 00 eb 00 00 3a e3  70 00 a0 03 20 00 00 0a  |%..ë..:ãp. . ...|
00000030  35 00 00 eb 00 00 37 e3  61 00 a0 03 1c 00 00 0a  |5..ë..7ãa. .....|
00000040  20 e0 8f e2 0c f0 8a e2  80 80 00 01 80 c1 0e 01  | à.â.ð.â.....Á..|
00000050  00 be 0e 01 80 ba 10 01  7c c1 0e 01 78 c1 0e 01  |.¾...º..|Á..xÁ..|
00000060  30 0d 0b 01 00 00 0b 01  28 e0 1f e5 10 0f 01 ee  |0.......(à.å...î|
00000070  00 00 a0 e1 00 00 a0 e1  00 00 a0 e1 0e f0 a0 e1  |.. á.. á.. á.ð á|
00000080  3c 30 4f e2 f4 21 93 e8  00 c0 82 e5 00 b0 a0 e3  |<0Oâô!.è.À.å.° ã|
00000090  05 00 54 e1 04 b0 84 34  fc ff ff 3a 00 90 86 e5  |..Tá.°.4üÿÿ:...å|

Enfin dans tous les cas il n y a plus de suspense, mais un pingouin dans la platine

#file *.o
fipmodule.o: ELF 32-bit LSB relocatable, ARM, version 1 (ARM), not stripped
khwl.o:      ELF 32-bit LSB relocatable, ARM, version 1 (ARM), not stripped
kiss_khwl.o: ELF 32-bit LSB relocatable, ARM, version 1 (ARM), not stripped

Probablement des Modules Linux (ELF) pour Processeur ARM

# ls -l /mnt/romfs/bin/
total 363
-rwxr-xr-x    1 root     root        45001 1970-01-01 01:00 busybox
-rwxr-xr-x    1 root     root       326433 1970-01-01 01:00 init

Dans ce cas là, on peut conclure que du logiciel libre a été utilisé pour la construction du firmware

CHIP MEDIATEK

Un autre cas plus compliqué, un firmware pour l’excellent Chipset de Mediatek


ed2k ://|file|MTK.BIN|1039288|b1d4955fb13528c982c34e8f756c7883|

# file MTK.BIN
MTK.BIN: data

# hexdump -C MTK.BIN | less
00000000  02 22 b6 02 25 8a 04 09  05 04 00 02 00 2e d2 4e  |."¶.%.........ÒN|
00000010  c2 1c c2 1e 90 f8 49 e0  90 fb e4 f0 90 f8 84 e0  |Â.Â..øIà.ûäð.ø.à|
00000020  54 38 f0 90 f8 a4 74 08  f0 22 00 02 25 36 c0 e0  |T8ð.ø¤t.ð"..%6Àà|
00000030  c0 d0 c2 8d e5 6e f4 60  31 e5 6e 70 08 75 8c ff  |ÀÐÂ.ånô`1ånp.u.ÿ|
00000040  75 8a a5 80 25 e5 6e b4  01 08 75 8c fc 75 8a 6c  |u.¥.%ån'..u.üu.l|
00000050  80 18 e5 6e b4 02 08 75  8c f8 75 8a d7 80 0b e5  |..ån'..u.øu.×..å|
00000060  6e b4 03 06 75 8c 70 75  8a c6 e5 60 c3 94 ff 50  |n'..u.pu.Æå`Ã.ÿP|
00000070  02 05 60 d0 d0 d0 e0 32  8b 38 8a 39 89 3a d2 62  |..`ÐÐÐà2.8.9.:Òb|
00000080  20 2d 03 02 01 02 12 1d  d6 60 77 e4 90 fb f2 f0  | -......Ö`wä.ûòð|
00000090  90 fb f2 e0 ff c3 94 05  50 28 ab 38 aa 39 a9 3a  |.ûòàÿÃ..P(«8ª9©:|
000000a0  8f 82 75 83 00 12 1d ef  fe 60 17 90 fb f2 e0 24  |..u....ïþ`..ûòà$|
000000b0  d8 f5 82 e4 34 fb f5 83  ee f0 90 fb f2 e0 04 f0  |Øõ.ä4ûõ.îð.ûòà.ð|

# strings MTK.BIN
b0-M
#8[,$b
R3=OPm
MT1369 RESETDISC UPGRADE@

Aie ! on sait pas grand chose, j’ai fait un script qui essaye de trouver des blocks de types connus dans une zone memoire

http://rzr.online.fr/docs/contribs/...

#file-analyze.sh MTK.BIN

12: binary Computer Graphics Metafile
27: SysEx File -
34: SysEx File -
37: x86 boot sector
40: SysEx File - Synthaxe
67: 8086 relocatable (Microsoft)
360: shared library
366: binary Computer Graphics Metafile
372: Curses screen image
373: locale data table
374: PDP-11 old overlay
375: locale data table
376: Hitachi SH big-endian COFF object, stripped
546: VISX image file
547: BIOS (ia32) ROM Ext. (170*512)
548: Dyalog APL version 255 .255
...

A l issue de cette analyse on peut localiser differents segments de code ARM et dsp...

RESSOURCES

(c) rzr 20040502
Article sous licence Open Content

Notez cet article en cliquant une étoile: (3.16/5)
2 votes

Formulaire Erreur

Des erreurs, omissions, fautes d'orthographe, .. ? aidez-moi en le signalant. Merci

Vos commentaires

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Suivre les commentaires : RSS 2.0 | Atom