Unlock TV China (ICHICKO 21”) Menggunakan Mikrokontroller
Mungkin judul posting ini kurang sesuai tapi binggung mau
ngasih judul apa Cuma pengin berbagi pengalaman aja.
Beberapa waktu yang lalu dapat sms gini :
081327XX... : “Mas, bisa benerin TV China ga?”
Me :”Ni siapa?dari mana? Merk nya pa?permasalahanya knp?”
081327XX... : “mr A, dari ds B. ICHICKO 21 inci, nyala Cuma
biru ada tulisan LOCK”
Deket rumah mr 081327xx ada tukang servis TV jadi ga enak, sedikit males juga.
Me : “Ouw, itu ke progrm nya ke kunci mas, ke mas Z ja pasti
bisa.”
081327XX... : “udah mas, remot ilang jd mas Z ga sanggp.”
Me : “ya dah nanti tek coba.”
Demikian awal mula kejadianya...
Dari sms yang saya terima dapat kesimpulan masalah pada
EEPROM, dan remot TV ga ada sehingga susah buat unlock pake remot universal,
lagi pula sejatinya saya bukan tukang servis TV jadi ga hafal kode servis TV
yang begitu banyak merknya.
Yang pertama disiapkan adalah EEPROM buat ganti yang lama.
Untuk TV jaman sekarang kebanyakan menggunakan EEPROM seri 24Cxx dan 28Cxx
sedangkan untuk TV China sendiri terkadang menggunakan EEPROM yang seri depanya
susah dihafal akan tetapi dari serangkaian angka dan huruf yang terlihat acak
biasanya ada kode xx24xx atau xx28xx yang menandakan bahwa dia kompatibel
dengan seri 24Cxx atau 28Cxx. Perbedaan dua EEPROM tersebut adalah pada
protokol komunikasinya. Untuk seri 24Cxx komunikasinya menggunakan I2C (serial)
sedangkan seri 28Cxx secara paralel.
Sedangkan simbol xx dibelakang seri 24C atau 28C merupakan
kode kapasitas memori EEPROM, biasanya 02(2 Kb), 04 (4 Kb), 08(8 Kb), 16(16 Kb)
dst.
Obrak – abrik kotak komponen, toples isi komponen dan box –
box harta karun yang tersembunyi diberbagai sudut kamar cuma menemukan EEPROM
seri 24C dan kapasitas yang ada 4Kb,8Kb dan 16Kb dan saya rasa itu cukup karena
kebanyakan TV menggunakan EEPROM tersebut.
Amunisi kedua adalah alat buat menulis data ke EEPROM. Dan
ternyata saya baru sadar bahwa saya nggak punya alat buat baca tulis EEPROM,
selama ini sering melihat diinternet tapi ga tertarik buat bikin.
Sedikit punya pengetahuan tentang mikrokontroler, harusnya
hal tersebut ga jadi masalah.....Obrak – abrik harta karun lagi dan
ha..ha...ternyata saya punya sismin mega8 yang sudah tersedia RTC menggunakan
DS1307. Loh...Kok...!! masalah yang akan dihadapi kan EEPROM, apa hubunganya
dengan DS1307.
Yah, masalah memang EEPROM tapi kenapa saya gembira, karena
DS1307 yang biasa saya pake adalah tipe DIP8 dan menggunakan soket IC DIP8.
Antara EEPROM 24Cxx dengan DS1307 sama – sama IC DIP8 dan transfer data
menggunakan I2C (SDA dan SCL) serta
keduanya memiliki pin SDA dan SCL pada nomor kaki yang sama begitu juga dengan
pin Vcc dan GND. Jadi tinggal melepas IC DS1307 dari soketnya dan mengganti
dengan EEPROM 24Cxx yang akan diproses.... masalah terselesaikan....
Selanjutnya tinggal menyiapkan program baca tulis EEPROM.
Langsung aja buka kompi dan run CVAVR ketik program dan compile.....run juga
ISIS proteus dan buat skematik uji coba.
Berikut program yang saya buat menggunakan CVAVR.
/*****************************************************/
#include "mega8.h"
#include "stdio.h"
#include "i2c.h"
#include "delay.h"
#define
EEPROM_BUS_ADDRESS 0xa0
unsigned char
eeprom_read(unsigned char address) {
unsigned
char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS
| 1);
data=i2c_read(0);
i2c_stop();
return
data;
}
void
eeprom_write(unsigned char address, unsigned char data) {
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();
delay_ms(10);
}
void main(void)
{
i2c_init();
while (1)
{
unsigned char input;
int alamat;
int data;
unsigned char buff[256]={
0 ,10 ,112 ,176 ,0 ,1 ,0 ,255 ,255 ,5 ,0 ,255 ,255 ,255 ,255
0 ,10 ,112 ,176 ,0 ,1 ,0 ,255 ,255 ,5 ,0 ,255 ,255 ,255 ,255
,255 ,255 ,1 ,5 ,51 ,50 ,51 ,50 ,0 ,11 ,70 ,70 ,50 , ,17
,230 ,128 ,171 ,193 ,64 ,80 ,117 ,69 ,64 ,64 ,21 ,64 ,7 ,9 ,80
,0 ,53 ,37 ,63 ,0 ,40 ,40 ,40 ,40 ,40 ,40 ,40 ,7 ,56 ,21
,16 ,31 ,55 ,51 ,11 ,75 ,75 ,75 ,1 ,0 ,24 ,9 ,2 ,47 ,5
,1 ,3 ,9 ,8 ,255 ,2 ,8 ,8 ,0 ,34 ,9 ,48 ,64 ,80 ,0
,0 ,82 ,4 ,5 ,0 ,0 ,0 ,48 ,0 ,0 ,0 ,5 ,32 ,32 ,16
,16 ,16 ,36 ,0 ,46 ,24 ,34 ,30 ,0 ,0 ,0 ,0 ,0 ,1 ,6
,188 ,47 ,161 ,2 ,4 ,175 ,255 ,119 ,83 ,20 ,0 ,55 ,33 ,101 ,101
,181 ,234 ,213 ,19 ,0 ,64 ,114 ,64 ,63 ,37 ,0 ,0 ,0 ,255 ,255
,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255
,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,224 ,255
,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255
,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255
,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,255 ,16 ,158 ,128 ,164 ,160
,128 ,254 ,164 ,128 ,199 ,166 ,128 ,95 ,168 ,128 ,99 ,168 ,128 ,57 ,155
,128 ,99 ,168 ,128 ,57 ,155 ,128 ,46 ,155 ,128 ,115 ,172 ,128 ,207 ,169
,128};
,128};
home:
printf("======= EEPROM Reader V.1
========%c",0x0d);
printf("-24c02 Masukan
[a]%c",0x0d);
printf("-24c04 Masukan
[b]%c",0x0d);
printf("-24c08 Masukan
[c]%c",0x0d);
printf("-24c16 Masukan
[d]%c",0x0d);
printf("-Tulis EEPROM [e]%c",0x0d);
delay_ms(1000);
input=getchar();
while(input==''){
}
if(input=='a'){
goto c02;
}
else if(input=='b'){
goto c04;
}
else if(input=='c'){
goto c08;
}
else if(input=='d'){
goto c16;
}
else if(input=='e'){
goto Tulis;
}
//======baca EEPROM 24c02 cetak ke
terminal =========//
c02:
for(alamat = 0x00 ; alamat <=
0xff;alamat++){
data=eeprom_read(alamat);
printf("%d %d
%c",alamat,data,0x0D);
delay_ms(10);
}
goto home;
//======baca EEPROM 24c04 cetak ke terminal
=========//
c04:
for(alamat = 0x00 ; alamat <=
0x1ff;alamat++){
data=eeprom_read(alamat);
printf("%d %d
%c",alamat,data,0x0D);
delay_ms(10);
}
goto home;
//======baca EEPROM 24c08 cetak ke
terminal =========//
c08:
for(alamat = 0x00 ; alamat <=
0x3ff;alamat++){
data=eeprom_read(alamat);
printf("%d %d
%c",alamat,data,0x0D);
delay_ms(10);
}
goto home;
//======baca EEPROM 24c16 cetak ke
terminal =========//
c16:
for(alamat = 0x00 ; alamat <=
0x7ff;alamat++){
data=eeprom_read(alamat);
printf("%d %d
%c",alamat,data,0x0D);
delay_ms(10);
}
goto home;
//======Tulis EEPROM sebanyak 256 Byte
===========//
Tulis:
for(alamat = 0x00;alamat
<=0xff;alamat++){
eeprom_write(alamat,buff[alamat]);
delay_ms(100);
printf("Add:%d -> %d
%c",alamat,buff[alamat],0x0d);
}
for(alamat = 0x00;alamat
<=0xff;alamat++){ //verifikasi
nilai yang ditulis
data = eeprom_read(alamat);
delay_ms(50);
if(data==buff[alamat]){
printf("Add:%d -> OK
%c",alamat,0x0d);
}
else{
printf("Data @ %d
Corrupt%c",alamat,0x0d);
}
}
goto home;
}
}
/*****************************************************/
Skematik di ISIS yang saya gunakan seperti gambar dibawah.
Setelah simulasi OK dan program di download ke
mikrokontroler maka siap berangkat.....
(PD banget mas ...emang tau kode lock di alamat berapa? Dan
unlocknya nilainya berapa?).....Sejauh ini tinggal mengandalkan insting
engineer dan kehendak Allah Yang Maha Kuasa.
Sampai dilokasi ternyata sudah ditunggu sama yang punya
rumah. Berikut sedikit obrolan yang mampu saya ingat..(terjemahan dari bahasa
sehari – hari saya)
Mr 081327xx : Wah, hampir saja saya
jemput mas..., Apa lagi banyak proyek mas?
Me : hehe...Jalan macet
mas...(haha...ga masuk akal......)
Mr 081327xx : Punya remotnya pa
mas?
Me : Ga, mau tek coba oprek IC
memori programnya dulu mas.(Orang desa kalo disebutin EEPROM bisa pesen antasid
takut sakit perut)
Mr 081327xx : Ouo.....ya
monggo.....!!!(*_!)
Pertama saya nyalakan TV dan terlihat nyala TV biru dan ada
tulisan LOCK ditengah layar. Saya coba pencet – pencet tombol yang ada di TV
dan tidak ada respon apapun pada TV.
Langsung saja buka cashing TV dan Alkhamdulillah ternyata
saya direstui oleh Allah SWT karena tipe EEPROM yang dipake TV ini 24C16
sehingga sesuai dengan yang saya bawa dari rumah dan TV yang ini menggunakan
kontroler yang mengijinkan user menggunakan EEPROM kosong. Sekedar info
beberapa merk TV china dapat dijalankan menggunakan EEPROM kosong jadi ketika
pertama kali dihidupkan, kontroler akan mentransfer data (parameter dasar) ke
EEPROM yang kosong tadi (seperti factory reset). Jadi langsung saja saya lepas
EEPROMnya dan saya pasang dengan EEPROM kosong berikut soketnya yang saya bawa
dari rumah.
Kemudian saya nyalakan TV setelah menunggu beberapa saat
pada layar TV tampak biru dan keluar display nomor chanel akan tetapi tampilan
layar tidak penuh. Kemudian mencoba pencet – pencet tombol di TV ternyata
berfungsi semua, hanya layar TV masih tampak biru. Ini menandakan bahwa program
TV sudah tidak terkunci, tinggal melakukan tuning untuk mencoba apakah TV
bekerja normal atau tidak. Ketika memencet menu sedikit kaget karena bahasa dan
tulisan yang digunakan menggunakan bahasa dan tulisan china. Hmm .. yang punya
rumah malah ketawa liat tulisan kaya cacing...
Setelah otak - atik sebentar akhirnya ketemu juga tulisan
ENGLISH dan *blink*...penampakan pada menu menjadi tulisan yang dapat saya
baca. Langsung saja saya jalankan ASM (kayaknya sih singkatan dari Auto Search
Mode) dan TV melakukan proses tuning dari VHF-L hingga UHF.
Sambil menunggu proses search pada TV saya nyalakan laptop
dan memaasang EEPROM TV yang asli bawaan TV tersebut ke sismin mikro. Setelah
laptop menyala saya hubungkan mikro ke laptop menggunakan USB to Serial dan
menjalankan software terminal. Comment yang punya rumah “ Jaman sekarang apa –
apa pake komputer ya mas” dan saya jawab dengan basa - basi ala sales perabot
dapur.
Info : saya menggunakan software terminal buatan sendiri
yang dapat menyimapan data yang diterima komputer dalam format xls(MS.Excel).
Apabila menggunakan terminal yang lain maka perlu dilakukan pengkopian data
dari terminal untuk analisa. Setelah terminal jalan seting Port dan Baudrate
sesuai tinggal ketik ‘d’ dan mikro akan mengirimkan data dari alamat 0 s/d 2047
setelah semua selesai mikro saya matikan dan EEPROM dilepas.
Ternyata TV sudah selesai melakukan searching dan beberapa
kejanggalan yang ada diantaranya adalah tampilan layar tidak penuh serta suara
tidak keluar. Lalu TV saya matikan dan cabut EEPRO kemudian melakukan pembacaan
seperti pada langkah sebelumnya. Kemudian hasil pembacaan saya bandingkan, ada
banyak data yang sama dan banyak juga data yang berbeda.
Setelah diamati, ternyata data pada EEPROM baik yang baru
maupun yang lama nilainya sama untuk tiap 256 alamat. Sebagai contoh nilai pada
alamat 0 sama dengan nilai pada alamat 256, 512,768,1024,1280,1536,1792. Ini
sedikit membuat tanda tanya apakah dari 2048 Byte kapasitas EEPROM yang
digunakan hanya 256 Byte saja atau kemungkinan lain saya tidak tau. Akan tetapi
ini sedikit menguntungkan karena yang dianalisa hanya 256 Byte data saja. Dan 256 angka yang yang nilainya acak jauh
lebih enak dipandang daripada 2048 angka yang nilainya acak.
Untuk mengembalikan TV pada kondisi normal maka perlu
diputuskan data mana yang akan digunakan. Kedua data EEPROM memiliki cacat
yaitu pada EEPROM lama terdapat data LOCK pada salah satu byte-nya, sedangkan
pada EEPROM baru data lebar layar dan parameter – parameter setingan suara
tidak ada. Jelas data pada EEPROM baru memiliki cacat yang lebih banyak, akan tetapi
data buat Unlock program ada pada EEPROM baru. Jadi kesimpulanya adalah memilih
data unlock program pada data EEPROM baru dan menyalinya ke data pada EEPROM
lama sesuai dengan alamat penyimpanan pada EEPROM baru.
Permasalahan yang muncul adalah dari 256 data, mana yang
berfungsi buat unlock program?
Mungkin anda juga akan berpikiran yang sama seperti saya
dalam mengambil keputusan tentang pemilihan data yang tepat. Seperti permainan
kata berkait mulai dengan kata LOCK
Lock berhubungan dengan Kunci à pintu à
rumah à
rumah memiliki pintu didepan, jadi data dialamat lebih awal yang berbeda
memiliki kemungkinan lebih besar sebagai data unlock.
Data pada alamat ke-3 pada EEPROM lama dan EEPROM baru
memiliki nilai yang berbeda. Pada EEPROM lama nilainya 164 sedangkan pada
EEPROM baru nilainya 176. Sehingga saya merubah nilai alamat ke-3 pada EEPROM
lama dengan nilai 176 kemudian menyalin semua data EEPROM lama yang telah
dimodifikasi pada alamat ke-3 kedalam variabel buff[256] pada program. Jika
sebelumnya anda bertanya – tanya dari mana asal nilai variabel buff[256] pada
program diatas, maka sekarang anda dapat menyimpulkan sendiri.
Setelah program dicompile dan didownload ulang ke
mikrokontroler tinggal menjalankan mikrokontroler bersama software terminal dengan EEPROM baru
yang masih terpasang pada sismin. Kemudian mengetik ‘e’ pada terminal dan
setelah proses selesai, mikro dimatikan dan EEPROM dipindahkan ke TV.
Kemudian saya nyalakan TV dan hasilnya ....*_* ...Horre...
TV menyala dengan normal...layar penuh dan suara terdengar
jelas tinggal pasang chasing, menyalakan rokok dan cas cis cus sedikit dan
terakhir mengucapkan TERIMA KASIH....
Tidak ada komentar:
Posting Komentar