Stránka 1 z 5

Tlaciaren Samsung ML-2525 - firmware

Napsal: 07 led 2013, 16:07
od rnbw
Mam tu tlaciaren Samsung ML-2525, ktora ma pravdepodobne poskodeny firmware - po zapnuti sa rozsvieti vypinac, prebliknu na oranzovo dve LED a tym to skonci, dalej vobec nereaguje, ani sa neda vypnut, ani nekomunikuje cez USB.

Ked podrzim pri zapnuti CANCEL, tak sa zapne v BOOT mode - LED rychlo blika roznymi farbami a komunikuje cez USB.

Nedari sa mi tam vsak nahrat ziadny firmware - skusal som z Linuxu (cat subor >/dev/usb/lp0), aj z Windows programami na to urcenymi (usbprns2.exe, usblist2.exe). Skusal som ML2525_V1.01.00.88.fls, ML2525_V1.01.00.83.hd (velkost 7 MB). Vzdy to skonci tak, ze sa prenesie cast suboru, LED sa rozsvieti na zeleno, potom sa prenos zastavi a tlaciaren nic dalej nerobi. Ked som skusal nejake mensie subory, tak tie sa prenesu a cele a tym to skonci.

Mam tu este jednu rovnaku tlaciaren, ale funkcnu. Firmware je tam V1.20.00.84. Na nej som tento postup vyskusal a sprava sa to uplne rovnako (tlaciaren po vypnuti a zapnuti zase funguje, nic sa neposkodi), takze vylucujem HW zavadu.

Skusal som to na dvoch roznych PC, s roznymi kablami.

Myslim si, ze nemam spravny firmware. Cim by to mohlo este byt?

Napsal: 09 led 2013, 09:26
od rnbw
Pripojil som seriovu konzolu. Sluzi na to (neosadeny) konektor CN1 HYPER, piny zlava: GND, RX, TX, 3V3. Na RX je neosadeny odpor, takze je nefunkcny. Uroven 3,3V, parametre 38400 8 N 1.

Normalny start (so zamrznutim):

Kód: Vybrat vše

[HWIC]
1PLL
2IOC
3SDRAM
4GPIO
5AHB
[END][Y]
Decompression ***********
-->>>> GO Kernel
jump_ExecCode() : ul_addr - 0x0200800
Pokus o flash celeho suboru velkosti 7340104 B (ML2525_V1.01.00.88.fls):

Kód: Vybrat vše

[HWIC]
1PLL
2IOC
3SDRAM
4GPIO
5AHB
[END]
jump_ExecCode() : ul_addr - 0x02600000
======================
  Start flash_writer
======================
[Iflash]=== Iflash_HWProtection ===
verify_Image : 0x02700000
i_header->pul_start_addr : 0x00000000
i_header->ul_count : 0x00000000
temp_buf :
SIG : $IMG
Download Image from PC
{
Download destination Address : 0x02700000
Please send data via usb (ISP1582)!!!
USB Chip Device ID= 0000001500008230
Image includes PJL(0000001B) -> Waste 45 bytes
Pokus o flash kratkeho suboru velkosti 524345 B (ML2520_V1.01.00.84.fls):

Kód: Vybrat vše

[HWIC]
1PLL
2IOC
3SDRAM
4GPIO
5AHB
[END]
jump_ExecCode() : ul_addr - 0x02600000
======================
  Start flash_writer
======================
[Iflash]=== Iflash_HWProtection ===
verify_Image : 0x02700000
i_header->pul_start_addr : 0x00000000
i_header->ul_count : 0x00000000
temp_buf :
SIG : $IMG
Download Image from PC
{
Download destination Address : 0x02700000
Please send data via usb (ISP1582)!!!
USB Chip Device ID= 0000001500008230
Image includes PJL(0000001B) -> Waste 45 bytes
[[524300 Bytes received]] - Complete Downloading

Download end
0x0008000C bytes Received
}/*Download End*/
verify_Image : 0x02700000
i_header->pul_start_addr : 0x00000000
i_header->ul_count : 0x00080000
temp_buf : $IMG
SIG : $IMG

 IFlashCheckSum START!!!
   start addr(0x0270000C) - end addr(0x0278000C)
   checksum(0x0000A5A5) - end addr(0x0278000C)
 IFlashCheckSum return TRUE END!!!

Source Checksum is valid
Found new kernel(0x0271C00C)!!!!
[[[FFFFFFF8]]], [[[000F69A4]]]
Image is invalid
Reset and Download Again

Napsal: 11 bře 2013, 20:26
od rnbw
Tak som sa konecne na to poriadne pozrel. Ten 512KB firmware je spravny, funkcna tlaciaren (resp riadiaca doska) ho akceptuje a flashne.

Pruser je, ze flash je integrovana v procesore Jupiter4E. Mimo neho je akurat EEPROM 93C66 - tu som preveril a nesposobuje to ona.

Pruser je, ze k procesoru nie je ziadna dokumentacia. Jedine v servisnom manuali k inej tlaciarni (ML2010) som nasiel, ze vnutri je "MFL130 flash core" a v tovarni sa to pravdepodobne programuje cez piny SDA a SCL - tie su zdielane s JTAG pinmi a ich vyznam sa pravdepodobne prepina pinom PROGRAM.

Riadok

Kód: Vybrat vše

[[[FFFFFFF8]]], [[[000F69A4]]]
z vypisu neuspesneho flashu pravdepodobne znamena kontrolu nejakeho ID modelu tlaciarne - aby to nepovolilo flashnut firmware pre nespravny typ. Vyzera to vsak, ze vo flash sa toto ID poskodilo na hodnotu FFFFFFF8 (ma tam byt 000F69A4) a tym padom boot loader neakceptuje firmware.

Takze ostava asi jedine nejako donutit boot loader, aby to zozral - mozno upravit subor - ale 000F69A4 sa tam priamo nikde nenachadza. Je tam pouzity neznamy kompresny algoritmus.

Napsal: 11 bře 2013, 20:49
od Andrea
Mně to komprimovaný nepřijde, texty jsou všechny čitelný.

Napsal: 11 bře 2013, 20:55
od rnbw
Lenze tie texty tam nie su vsetky. Tlaciaren vie vytlacit testovaciu stranku s roznymi textami (pocty stran a pod.) a tie tam nie su. Zato tam je "inflate 1.2.3 Copyright 1995-2005 Mark Adler". Takze algoritmus uz je znamy, ale ako je tam pouzity, to je druha vec.

Napsal: 11 bře 2013, 21:07
od Andrea
To se bude rozbalovat, až když se to spustí, ten flashovací program to asi rozbalovat nebude. Vidím dobře, že je tam Samsung ML-6060 a ne ML-2525?
A ty texty, co vypisuje ten bootloader o tom checksumu a verzi (ID) v závorkách, tam jsou čitelné. Možná by ta část šla dekompilovat a zjistit, kde to tu verzi bere. Chce to ale vědět, co to je za procesor.

Napsal: 11 bře 2013, 21:24
od rnbw
Ano, ten retazec ML-6060 som videl vo viacerych firmwaroch Samsung. Je to asi nejaky pozostatok z bordelu, co v tom maju...

Pravda, ten flasher to asi rozbalovat nebude, to by bolo prilis zlozite. Procesor by mal byt ARM940T.

Napsal: 11 bře 2013, 21:33
od Andrea
Hmm, jenže z DISARMu, co tu mám, nevypadlo nic, co by vypadalo jako smysluplný kód. Možná je to v THUMBu.

Napsal: 11 bře 2013, 21:39
od rnbw
Asi bude:

Kód: Vybrat vše

This code can only run on a Thumb compatible processor

Napsal: 11 bře 2013, 21:45
od Andrea
Umí něco z GCC disassemblovat takovýhle binární kód? Objdump hlásí, že nezná formát souboru. :( Já s GCC moc nekamarádím, ale mám tu ARMový počítač s Linuxem, třeba by to nějak šlo disassemblit. :)

Napsal: 11 bře 2013, 21:57
od rnbw
Vraj "objdump -D -b binary", ale nikdy som neskusal. A ARM verziu nemam nikde...

Napsal: 11 bře 2013, 22:06
od Andrea
Jo, to funguje, ale to, co z toho vypadlo, není o nic lepší než z toho DISARMu. Asi se to neumí samo přepínat mezi ARM a THUMB. :(

Napsal: 11 bře 2013, 22:10
od rnbw
Mozno prepinac -m by pomohol, neviem ake architektury ta ARM verzia pozna. Na x86 vidim: i386 i386:x86-64 i8086 i386:intel i386:x86-64:intel l1om l1om:intel plugin.

Napsal: 11 bře 2013, 22:21
od Andrea
Pro binary formát mi to nabízí jen arm a s tím jsem to přeložila. Když dám -Mforce-thumb, tak to přeloží celé jako Thumb, ale to asi taky není ono. :( Být to pro x86, tak je to o dost jednodušší.

Napsal: 11 bře 2013, 22:48
od Andrea
Aha, to není čistej BIN, to má nějakou hlavičku, takže je to celý pošouplý. Mně se to zdálo nějaký divně zarovnaný.