[topic unique] hack cadre photo usb

hack cadre photo usb [topic unique] - Hardware - Linux et OS Alternatifs

Marsh Posté le 10-06-2012 à 18:06:12    

Bonjour,
 
j'ouvre ce topic sur le hack cadre photo, pour les transformer en écran usb,  
les hacks fonctionne principalement sur des environnements GNU/Linux
exemple de résultat final :
http://i.imgur.com/1I8D3.jpg
 
plusieurs modèles de cadres sont modifiable:
- ceux basé sur une puce AX206 (celui que j'utilise)  
- basé sur une puce ST2205
- cadre photo samsung (sous Windows ça fonctionne de base)
- parrot df3120
 
pour les modèle à base de AX206 :
la première chose est d'en trouver un qui soit modifiable et qu'il est un écran de bonne qualité,
la liste des modèles ce trouve ici
 
modèle 1,5 pouce:
j'ai commandé le modèle delight-digi censé être supporté, au final il est supporté mais avec le modèle dx27893,
ce qui implique que les firmwares sont très variable, bon point pour l'écran qui est de bonne qualité (couleur / angle de vision)  
le modèle dx27893 est dispo pour un peut plus cher sur dealxtreme avec la confirmation dans les avis que l’écran est de bonne qualité
 
modèle 2.4 pouce:
celui ou je suis sur de la qualité est le pearl mais il faut avoir quelqu'un en Allemagne pour le commander
le modèle link-delighta des angles de vision très moyen
 
partie logiciel :
la compilation fonctionne parfaitement sur une Debian squeeze,
sur les autre distributions il est possible que la partie génération des firmwares modifié ne fonctionne pas car les mise à jours de sdcc sont à priori incompatible avec ceux ci
Installation des dépendances :

Code :
  1. sudo apt-get install gcc python-dev libc6 libusb-dev zlib1g-dev libssl-dev make


télécharger les sources de dpf-ax et lancer la compilation

Code :
  1. mkdir dpf
  2. cd dpf
  3. wget http://sourceforge.net/projects/dp [...] source=dlp -O dpf-ax.tgz
  4. tar -xvzf dpf-ax.tgz
  5. cd dpf-ax
  6. make


pour les firmwares, il y a 2 possibilité:
-télécharger les firmware pré compilé(méthode facile)

Code :
  1. cd ..
  2. wget http://sourceforge.net/projects/dp [...] z/download -O dpf-ax_0.42_firmware_20130523.tgz
  3. tar -xvzf dpf-ax_0.42_firmware_20130523.tgz
  4. cd dpf-ax


-ou compiler ceux ci (méthode longue):
pour commencer il faut installer quelque dépendance
installation de sdcc :
sous debian squeeze :

Code :
  1. wget http://ftp.isu.edu.tw/pub/Linux/De [...] -5_all.deb
  2. wget http://ftp.isu.edu.tw/pub/Linux/De [...] _armel.deb
  3. sudo dpkg -i sdcc*.deb


ou pour debian wheezy et ubuntu (tester sous wheezy), cc1111 est un fork de sdcc

Code :
  1. sudo apt-get install cc1111


intelhex est aussi nécessaire :

Code :
  1. wget https://launchpad.net/intelhex/trun [...] 1.4.tar.gz
  2. tar -xvzf intelhex-1.4.tar.gz
  3. cd intelhex-1.4
  4. sudo python setup.py install


pour terminer on lance la génération des firmwares

Code :
  1. make firmware


le hack
sauvegarde du firmware (penser à le conserver, pour le reflasher à son état d'origine en cas de problème)
il faut passer le cadre en connexion USB (en principe il faut appuyer 3 fois sur le bouton menu)

Code :
  1. cd tools
  2. sudo python fulldump.py /dev/sg1 (ou /dev/sr1)


et on verifie si le hack peut fonctionner (le nom du fichier contient la date, à modifier si besoin)

Code :
  1. python identify.py fulldump_*.bin


exemple quand le cadre est connue pour être modifiable

Citation :

Looking for firmware.............: Found (buildwin, 128x128 px).
Looking for Openwin..............: Found.
Looking for LcdIniTbl............: Found.
Looking for backlight & contrast.: Found, Found.
Looking for known signatures.....: Found.
 
Your dpf is compatible with model ['dx27893_2'].


l'élément important à noter est : dx27893_2
 
ensuite il faut démarrer le cadre photo en mode recovery
appuyer dessus le bouton menu et reset (avec un trombone),
tous en restant appuyer brancher le câble usb (avec une troisième main c'est plus facile)
l’écran ne doit pas s'allumer et avec la commande dmesg on devrait avoir quelque chose qui ressemble à ça

Citation :

hiddev0,hidraw0: USB HID v2.01 Device


installer le nouveau firmware :

Code :
  1. ./hiddetach
  2. sudo python restore.py ../src/fw_<<ref_cadre>>.bin  -f


<<ref_cadre>> est à remplacer par le nom du modèle donner au moment de l'identification
si l'opération ce passe bien l'écran devrais afficher des yeux
exemple
http://i.imgur.com/bHvGp.jpghttp://i.imgur.com/BAwYT.jpg
 
exploitation du cadre de l'écran USB
lcd4linux (linux) :
 - installation des dépendances (sous debian sqeeze)

Code :
  1. sudo apt-get install libtool automake autoconf subversion libgd2-noxpm-dev libmpdclient-dev libibus-dev


 - installation des dépendances (sous debian wheezy)

Code :
  1. sudo apt-get install libtool automake autoconf subversion libgd2-noxpm-dev libmpdclient-dev libibus-1.0-dev


si vous utiliser plusieurs type d’écran avec lcd4linux :
éditer le fichier build-dpf-lcd4linux.sh

Code :
  1. nano build-dpf-lcd4linux.sh


vers la ligne 49, changer ceci :
./configure --with-drivers=DPF
par  
./configure --with-drivers=all
 
ensuite on lance la compilation de lcd4linux

Code :
  1. make lcd4linux


lors de la compilation on a un récapitulatif des drivers et plugin dispo

Citation :

included drivers:
   drv_dpf.o drv_generic_graphic.o widget_image.o
-----------------------------------------
included plugins:
   plugin_apm.o plugin_button_exec.o plugin_asterisk.o plugin_cpuinfo.o plugin_dbus.o plugin_diskstats.o plugin_dvb.o plugin_exec.o plugin_event.o plugin_file.o plugin_fifo.o plugin_hddtemp.o plugin_huawei.o plugin_i2c_sensors.o plugin_imon.o plugin_isdn.o plugin_kvv.o plugin_loadavg.o plugin_meminfo.o plugin_mpd.o plugin_mpris_dbus.o plugin_netdev.o plugin_netinfo.o plugin_pop3.o plugin_ppp.o plugin_proc_stat.o plugin_sample.o plugin_seti.o plugin_statfs.o plugin_uname.o plugin_uptime.o plugin_w1retap.o plugin_wireless.o plugin_xmms.o


 
et parmi les plugins non dispo (car dépendance non installé) on a:

Citation :

configure: WARNING: nmeap.h header not found: gps plugin disabled
configure: WARNING: iconv not found: iconv plugin disabled
configure: WARNING: mysql/mysql.h header not found: mysql plugin disabled
configure: WARNING: sqlite3.h header not found: qnaplog plugin disabled


à vous d'installer les packets si vous en avez besoin.
 
ensuite on copie le binaire lcd4linux dans /usr/local/bin  
(à noter que le binaire peut être utiliser sur un autre système tous pendant que la base matériel est la même et que les dépendances sont installé)

Code :
  1. sudo cp lcd4linux/lcd4linux /usr/local/bin


et on créer et remplis un fichier de conf (exemple en 128x128 qui permet d'avoir comme ce qu'il y a dessus la photo en tête de topic)

Code :
  1. sudo nano /etc/lcd4linux.conf


Citation :

Layout 'dpf128'
Display 'DPF'
 
Plugin MPD {
    enabled 1
    server 'localhost'
    port 6600
#    password 'secret'
    minUpdateTime 500
}      
 
Variables {
    # Ticks:
    second 1000
    minute 60 * second
     
    # Standard Dimensions:
    linesize 21 # max line length, for status lines etc.
    width100 19 # full width after padding (border)
    width050 10 # 1/2 of full width
    width033  7 # 1/3 of full width
    width025  5 # 1/4 of full width
    width010  2 # 1/10 of full width
 
    # Colors:
    # ToDo: Alphakanal ausnutzen
    black     '000000'
    white     'ffffff'
    red       'ff0000'
    darkblue  '000066'
    lightgray 'b2b2b2'
    darkgray  '191919'
    barcolor0 '5f5fff'
    barcolor1 'ff5f5c'
 
    t_onesec  1000
    t_500m  500
    tack 500
    tick 100
    tacku 100
    scroller 300
}
 
Display dpf {
   Driver 'DPF'
   Port 'usb0'
   Font '6x8'
   Foreground lightgray
   Background black
   Basecolor black
}
 
Widget System {
    class 'Text'
    expression uname('nodename') . ' '. netinfo::ipaddr('wlan0')
    width linesize
    align 'C'
    Background lightgray
    Foreground darkgray
}
 
Widget Time {
    class 'Text'  
    expression strftime('%d.%m.%Y  %H:%M:%S', time())
    width linesize    
    align 'C'
    update 1 * second
    Background lightgray
    Foreground darkgray
}
 
Widget Uptime {
    class 'Text'
    expression 'Up: ' . uptime('%d days %H:%M')
    width linesize
    align 'C'
    update 1 * second
    Background lightgray
    Foreground darkgray
}
 
# display artist and album, scrolling
Widget mpd-combo {
    class 'Text'
    expression mpd::artist() . '/' . mpd::title()  
    width linesize
    align 'A'
    speed scroller
    update tack
}
 
Widget mpd-state {
        class 'Icon'
        speed tack
        update tack
        bitmap {
        row1 '......|.*....|.......|......'
        row2 '......|.**...|.......|......'
        row3 '......|.***..|.**..**|.*****'
        row4 '......|.****.|.**..**|.*****'
        row5 '......|.***..|.**..**|.*****'
        row6 '......|.**...|.**..**|.*****'
        row7 '......|.*....|.**..**|.*****'
        row8 '......|......|.......|......'
    }
        frame (mpd::getStateInt())
        visible (1)
}
 
# small playbar and track time
Widget smallMP3Bar_part1 {
    class 'Bar'
    expression mpd::elapsedTimeSec()
    length 14
    min 0
    max mpd::totalTimeSec()
    direction 'E'
    style 'H'
    update tack
}
 
Widget smallMP3Bar_part2 {
    class  'Text'
    expression mpd::formatTimeMMSS( mpd::elapsedTimeSec() ).'/'.mpd::formatTimeMMSS( mpd::totalTimeSec() )
    width  13
    update tack
    align  'L'
}
 
 
# display mpd repeat icon
Widget mpd-repeat {
 class 'Icon'
 speed tack
 update tack
   bitmap {
        row1 '......|......'
        row2 '......|******'
        row3 '......|*....*'
        row4 '******|*..***'
        row5 '******|*...**'
        row6 '......|*....*'
        row7 '......|*.....'
        row8 '......|******'
    }
 frame (mpd::getRepeatInt())
 visible (1)
}
 
# display mpd random icon
Widget mpd-random {
 class 'Icon'
 speed tack
 update tack
   bitmap {
        row1 '......|......'
        row2 '......|******'
        row3 '......|.....*'
        row4 '******|*..***'
        row5 '******|**..**'
        row6 '......|***..*'
        row7 '......|*.....'
        row8 '......|******'
    }
 frame (mpd::getRandomInt())
 visible (1)
}
 
# display current song id and number of total song
Widget mpd-playlist-pos {
    class 'Text'
    expression 'P: '.mpd::getMpdPlaylistGetCurrentId().'/' .mpd::getMpdPlaylistLength()
    width 12  
    align 'L'  
    update tack
}
 
# display volume
Widget mpd-vol {
    class  'Text'
    expression 'V:'.mpd::getVolume()
    width  7
    align  'R'
    update tack    
}
 
Widget mpd-bitrate {
    class  'Text'
    expression mpd::bitRate().'k'
    width  15
    update tack
    align  'L'
}
 
Widget Load {
    class 'Text'
    expression loadavg(1)
    prefix 'Load'
    postfix loadavg(1) > 1.0 ? '!' : ''
    width linesize
    precision 1
    align 'R'
    update 1 * second
}
 
Widget Eth {
    class 'Text'
    expression (netdev('wlan0', 'Rx_bytes', 1 * second) + netdev('wlan0', 'Tx_bytes', 1 * second)) / 1024
    prefix 'wlan0'
    postfix ' KB/s'
    width linesize
    precision 1
    align 'R'
    update 4 * second
}
 
Widget EthTraffic {
    class 'Text'
    expression (netdev('wlan0', 'Rx_bytes', 0)+netdev('wlan0', 'Tx_bytes', 0))/1024/1024/1024
    prefix 'Traffic'
    postfix ' GB'
    width linesize
    precision 3
    align 'R'
    update 10 * second
}
 
Widget FSSpace {
    class 'Text'  
    expression statfs('/home', 'bavail') * statfs('/home', 'bsize') / 1024 / 1024 / 1024
    prefix '/home'  
    postfix ' GB'
    width linesize
    precision 2
    align 'R'  
    update 10 * second  
}
 
Widget MemoryFree {
    class 'Text'
    expression (meminfo('MemFree') + meminfo('Cached')) / 1024
    prefix 'Memory Free '
    postfix ' MB'
    width linesize
    precision 0
    align 'R'
    update 5 * second
}
 
Layout dpf128 {
    Row01.Col01 'System'
    Row02.Col01 'Time'
    Row03.Col01 'Uptime'    
    Row5.Col01 'mpd-combo'
    Row6 {
        Col02 'mpd-state'
        Col04 'mpd-repeat'
        Col06 'mpd-random'
        Col08 'smallMP3Bar_part1'  
        }
    Row8 {
        Col01 'smallMP3Bar_part2'
        Col14 'mpd-bitrate'  
        }
    Row9 {
        Col01 'mpd-playlist-pos'
        Col14 'mpd-vol'  
        }
    Row11.Col01 'Load'
    Row12.Col01 'Eth'
    Row13.Col01 'EthTraffic'
    Row14.Col01 'FSSpace'
    Row15.Col01 'MemoryFree'
}


 
le fichier de conf doit être visible que par root sinon il ne ce lance pas

Code :
  1. sudo chmod 0600 /etc/lcd4linux.conf


 
et lancer lcd4linux

Code :
  1. sudo lcd4linux


 
sources:
http://forum.doozan.com/read.php?9,2435 (surtout vers les dernière page)
http://geekparadise.de/2011/04/dig [...] -dockstar/
http://www.mikrocontroller.net/topic/246772
http://tech.section5.ch/news/
http://openschemes.com/2011/08/29/ [...] mware-sdk/
http://sourceforge.net/projects/pydpf/
 
to be continued ...


Message édité par ktalog le 01-06-2013 à 17:37:52
Reply

Marsh Posté le 10-06-2012 à 18:06:12   

Reply

Marsh Posté le 11-06-2012 à 16:34:36    

reservé

Reply

Marsh Posté le 11-06-2012 à 16:34:44    

au cas ou

Reply

Marsh Posté le 11-06-2012 à 16:43:35    

t'aurais un lien pour le cadre que tu as acheté?

Reply

Marsh Posté le 11-06-2012 à 17:44:16    

je viens de mettre quelque lien en début de topic

Reply

Marsh Posté le 11-06-2012 à 18:19:33    

Drapal sur le sujet, si tu as des infos pour le modèle Samsung (quel modèle ? pas de hack pour Linux ? Plus intéressant que le rare u70 ?)


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 11-06-2012 à 18:19:53    

merci :jap:

Reply

Marsh Posté le 11-06-2012 à 21:12:37    

bardiel a écrit :

Drapal sur le sujet, si tu as des infos pour le modèle Samsung (quel modèle ? pas de hack pour Linux ? Plus intéressant que le rare u70 ?)


dans la doc lcd4linux il y a ça:
http://ssl.bulix.org/projects/lcd4 [...] SamsungSPF
perso j'ai un spf-87hg, donc pas supporter mais j’essaierais d'en faire quelque chose quand j'aurais le temps
 
edit: sous windows la majorité des cadres samsung peuvent fonctionnement comme un second écran via l'installation du logiciel frame manager


Message édité par ktalog le 11-06-2012 à 21:21:25
Reply

Marsh Posté le 04-09-2012 à 00:55:50    

j'ai enfin pris le temps de finir la première partie de ce topic (hack + usage avec lcd4linux)

Reply

Marsh Posté le 07-12-2012 à 12:53:27    

bien tout ca.
 
a suivre.


---------------
DU LOURD, TOUJOURS !
Reply

Marsh Posté le 07-12-2012 à 12:53:27   

Reply

Marsh Posté le 07-12-2012 à 15:02:10    

tient le genre de truc qui m'interesse bizarrement :D


---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
Reply

Marsh Posté le 09-12-2012 à 22:31:24    

faut que je mette à jour le topic car les sources de dpf-ax ont encore changé


---------------
topic hack cadre photo usb > écran USB
Reply

Marsh Posté le 01-06-2013 à 00:12:00    

Maj du topic, les sources ont pas mal changé, au final c'est plus simple à mettre en place, et un peut moins de dépendance à installé


---------------
topic hack cadre photo usb > écran USB
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed