Portál AbcLinuxu, 2. května 2025 08:39
Vlastnosti protokolu:
Signály používané v IR ovládačoch sú zvyčajne modulované na určitú nosnú frekvenciu aby bolo jednoduché odfiltrovať okolité zdroje IR žiarenia. V prípade NEC protokolu je nosná frekvencia 38 kHz. Odporúčané plnenie (pomer medzi trvaním hodnoty 1 voči 0) je 1/4, alebo 1/3. Priebeh nosného signálu a časy trvania sú na nasledujúcom obrázku.
Dáta sú kódované šírkou medzier medzi impulzmi. Impulz má trvanie 562.5 µs, čo je pri nosnej frekvencii 38 kHz 21.375 cyklov. Logická 0 sa vyšle ako impulz trvajúci 562.5 µs, za ktorým nasleduje rovnako dlhá medzera. Celkový čas vyslania logickej 0 je tak 1.125 ms. Vysielanie logickej 1 trvá 2x dlhšie, takže medzera trvá 1.6875 ms.
Vysielanie signálu začína 9 ms trvajúcim impulzom (AGC burst). Ten slúži na kalibráciu zosilňovača IR prijímača. Nasleduje medzera trvajúca 4.5 ms. Po tejto sekvencii nasledujú samotné dáta. V príklade je použitá adresa 0x04 (LG) a príkaz 0xff (EZ_SETUP). Prenos začína najmenej významným bitom (LSB) a končí najviac významným bitom (MSB).
Jednotlivé slová (8 bitov) sa prenášajú kvôli kontrole 2x za sebou. Pri druhom prenose sú bity invertované, vďaka čomu je dĺžka celého príkazu konštantná.
Podrobnosti o protokole sú zverejnené na webe SB-Projects
Po hardvérovej stránke je diaľkový ovládač veľmi jednoduché zariadenie. Postačí nám zdroj signálu (napr. mikrokontrolér), infračervená LED a pre menej odvážnych aj nejaký ten rezistor na obmedzenie prúdu pretekajúceho LED
Po hardvérovej stránke bude zariadenie maximálne jednoduché. Na vybraný vstupno-výstupný port pripojíme cez rezistor 100Ω IR LED. Na nasledujúcich obrázkoch je schéma a moje zariadenie (prosím nevšímajte neporiadok od AVR naľavo, ten patrí k inému projektu).
Následne postačí jednoduchý program, ktorý odvysiela sekvenciu popísanú v časti o NEC protokole. Kód klávesy, ktorá sa vysiela je možné zmeniť na riadku transmitNecData
výmenou konštanty LG_EZ_ADJUST
za LG_IN_START
, alebo LG_POWER_ONLY
.
#define F_CPU 9216000UL // Taktovacia frekvencia AVR kvôli výpočtu delay #include <avr/io.h> #include <avr/interrupt.h> #include <avr/sfr_defs.h> #include <inttypes.h> #include <util/delay.h> #define ir_on() PORTB=0xff #define ir_off() PORTB=0x00 #define NEC_LG_ADDRESS 0x04 // Trvanie vysokej a nízkej honoty v PWM modulácii #define NEC_CARRIER_HIGH_DURATION 6.5789474 #define NEC_CARRIER_LOW_DURATION 17.736842 // Počet cyklov impulzov #define NEC_CALIBRATION_CYCLES 342 #define NEC_PULSE_CYCLES 21 // 21.375 cyklov // Trvanie medzier #define NEC_0_DELAY 562.5 #define NEC_1_DELAY 1687.5 // Tlačidlá #define LG_IN_START 0xfb #define LG_POWER_ONLY 0xfe #define LG_EZ_ADJUST 0xff static inline void transmitCalibrationPulse(void) { for(uint16_t i = 0; i < NEC_CALIBRATION_CYCLES ; i++) { ir_on(); _delay_us(NEC_CARRIER_HIGH_DURATION); ir_off(); _delay_us(NEC_CARRIER_LOW_DURATION); } } static inline void transmitPulse(void) { for(uint16_t i = 0; i < NEC_PULSE_CYCLES ; i++) { ir_on(); _delay_us(NEC_CARRIER_HIGH_DURATION); ir_off(); _delay_us(NEC_CARRIER_LOW_DURATION); } } static inline void transmitByte(uint8_t byte) { for (int i = 0; i < 8; ++i) { if (byte & (1 << i)) { transmitPulse(); _delay_us(NEC_1_DELAY); } else { transmitPulse(); _delay_us(NEC_0_DELAY); } } } static inline void transmitIrEnd(void) { transmitPulse(); _delay_ms(4.708); } void transmitNecData(uint8_t address, uint8_t command) { transmitCalibrationPulse(); _delay_ms(4.5); transmitByte(address); transmitByte(~address); transmitByte(command); transmitByte(~command); transmitIrEnd(); } int main(int argc, char *argv []) { (void)(argc); (void)(argv); DDRB = 0b11111111; // Aktivácia výstupov while(1) { transmitNecData(NEC_LG_ADDRESS, LG_EZ_ADJUST); _delay_ms(1000); } return 0; }
Pre tých, ktorí sa nechcú babrať s AVR existuje aj o niečo jednoduchšia cesta. Ide v o pripojenie IR LED priamo na zvukový výstup MP3 prehrávača a prehranie signálu uloženého vo formáte WAW. Zvukové súbory ako aj ďalšie improvizované spôsoby prístupu do servisného menu sú na openlgtv.org.ru.
Nižšie modely televízorov LG majú zvyčajne zakázané používanie USB portu. USB port býva na týchto televízoroch označený ako service only. Pre jeho aktiváciu stačí vyslať signál EZ_ADJUST a v podmenu ToolOption 3 kde stačí nastaviť EMF na hodnotu 1 a Divx na hodnotu HD.
Dosť bolo hrania sa, poďme niečo rozbiť Na prístup ku konzole budeme potrebovať RS232 port a null-modemový kábel. V prípade novších modelov môže byť na televízore RS232 nainštalovaný ako neštandardný konektor, ktorého zapojenie nájdeme opäť na openlgtv.org.ru.
Tento krok môžte pre začiatok preskočiť, a vrátiť sa sem v prípade, že nebude pripojenie fungovať. Postup povolenia debug režimu je nasledovný:
Heslo televízora má tvar NÁZOV_MODELUelqjrm. Ak máme napr model 32LD320-ZA heslo bude 32LD320-ZAelqjrm. Presný názov modelu je možné nájsť v menu IN_START (zobrazí sa po vyslaní signálu IN_START).
Pre komunikáciu cez RS232 môžme použiť program screen
. Rýchlosť závisí od verzie firmvéru. Je to buď 9600bps, alebo 115200bps. Spustíme teda screen /dev/ttyUSB0 115200
, alebo 9600 (za ttyUSB0 dosadiť správnu adresu portu). Debug menu by sa malo zobraziť po vyslaní jednej z nasledujúcich sekvencií:
Potom už stačí len zadať príkaz sh a sme pánmi vesmíru
1:ORG MAIN $ sh /bin/sh: can't access tty; job control turned off #
Dúfam, že pri čítaní môjho dnešného blogu nikto nič nebrickol a hádam ani neprišiel k úrazu Možnosti televízorov LG samozrejme nekončia na rootovskej konzole. Niekoľko užívateľov vyvíja vlastnú vetvu firmvéru s podporou rôzneho hardvéru ako napr. USB sieťové karty, pomocou ktorých je možné prehrávať súbory, alebo streamy zo siete.
Tiskni
Sdílej:
tu sa neda nic ine len dat
inac velmi dobre sa brickuju nintendo wii konzoly :D
Pokud platí vzorkovácí teorémLOL, co? Jak, „pokud platí“?
Ale u notebooků bych to radějí vůbec nezkoušel, jejich porty dávají moc malé proudy (klidně jen 2-4 mA).No tak těmi 2 mA budeš spínat tranzistor a LEDku budeš napájet z nějaké externí baterky. Horší je, že dnešní počítače (myšleno běžná x86 PC) už prostě žádná GPIO vhodná ke znásilnění vyvedená nemají.
Paradni clanek. Tohle jsme meli delat v elektrotechnice na stredni misto pajeni krychlicek .
btw. mas tam preklep ACG brust ma byt ACG burst
AGC
Hackeři nevymřeli!
Nenazval by som sa hackerom, iba som použil informácie zverejnené na niekoľkých weboch a dal ich dokopy. V každom prípade snažím sa pracovať tvrdo na to, aby sa zo mňa stal . Inak vynikajúci text na túto tému napísal jeden obyvateľ abclinuxu s nickom Bystroushaak.
Robím aj zaujímavejšie veci s hardvérom, ale je to dosť taká citlivá warezácka záležitosť, kde musím informácie o hardvéri hľadať v uniknutých dokumentoch. Je neuveriteľné aký prístup k otvorenému softvéru majú výrobcovia hardvéru. Najlepší sú tí, ktorí využijú kód pod GPL (Linux) s pár úpravami pre ich hardvér a úpravy ani nezverejnia.
Tak doufám že se ti to brzo povede a děkuji za článek
Já se chystám na tvorbu RS-232 periferií, pro začátek chci postavit teploměr (8 kanálů) abych věděl, jaká je v průběhu dne teplota na koleji a venku (připadá mi, že se to moc neliší) Jestli se povede, tak u RS-232 nějakou dobu zůstanu, nápadů je hromada
Moc krásnej
Já uvažoval spíš o TTL součástkách, programování není můj šálek čaje a "umím" jen v Bashi
Inak vynikajúci text na túto tému napísal jeden obyvateľ abclinuxu s nickom Bystroushaak.Wow, on to i někdo četl :) Jinak +1 za tvůj článek, dost se mi líbil.
Už jsem ho za život projel asi třikrát Mimochodem nemá se používat "byste" místo "-by jste"?
No vidíš to, nás před tím varovali celej čtvrťák před maturitou
A pro ČT i další existuje tv-dl
1) spustit televizi a vyber kanál
2) stiskněte tlačítko HOME a držte ho ( spustí se nabídka HOME, za 3 sec zmizí a hned se nahoře na obrazovce objeví info o kanálu)
3) rychle uvolnětě tlačítko HOME(asi Menu) a stiskněte 1105 a stisknětě OK
4) A máte tajné menu
Editace *.tll lze přes program edankTLL.exe, snad vám to někomu pomůže
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.