Related: Multimedia audio controller Divx
(Le jour ou les firmwares s'ouvriront.)
(c) rzr 20040502 Article sous licence Open Content
N'est il pas frustrant d'avoir une platine 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.
Partons des constats suivants,
Certains penseront que le marché des lecteurs multimedia de salon n'ont rien a voir avec celui de la micro, comme fesait 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 :
Il est donc plus que logique que le logiciel doit é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.
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.
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).
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/products/RMP4_video_codec.htm
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” ?
(support des formats émergents libres ou non : OGG Matroska etc)
(par exemple ne trouvez vous pas frustrant de devoir allumer votre TV pour pouvoir selectionner votre répertoire de musiques preférées ?)
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 :
Techniques :
Juridiques :
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 http://www.amazon.fr/exec/obidos/ASIN/B0001L266E/rzr-21/ ).
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.
Beaucoup d'encre (ou d'octet) a été versée sur l'affaire “Kiss vs mplayer”.
par exemple le DP-1000:
http://www.amazon.fr/exec/obidos/ASIN/B0000E63Z9/rzr-21/#
1/ Récupérons la mise à jour du firmware à: http://www.kiss-technology.com/files/firmware/KiSS_DP-1000_FW2.8.5_PAL.zip
# 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
Enfin dans tous les cas il n y a plus de suspense, mais un pingouin dans la platine
# 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üÿÿ:...å|
#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.
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 | 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
http://rzr.online.fr/docs/contribs/bin/file-analyze.sh
#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…
http://who.is.free.fr/wiki/index.php?LibreHardware
(c) rzr 20040502 Article sous licence Open Content
“Mais voilà, certains industriels, peu scrupuleux violent les conditions dutilisation de ces logiciels.” j aimerais pouvoir l'enlever car c est inutile d echaufer les esprits pour rien … et le remplacer par :
N'est il pas frustrant d'avoir une platine 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.
http://rzr.online.fr/docs/contribs/punkouin.png
@Enfin dans tous les cas il n y a plus de suspense, mais un pingouin dans la platine