LG:n television sammuttaminen Ubuntussa

Discussion in 'Linux -keskustelu' started by patkis, Jun 28, 2012.

  1. patkis

    patkis Member

    Joined:
    Sep 11, 2010
    Messages:
    40
    Likes Received:
    0
    Trophy Points:
    16
    Ostin LG:n television ja käytän sitä tietokoneeni näyttönä. Huomasin kuitenkin, että televisio ei sammu vaikka olen asettanut sen sammumaan 10min kuluttua, kun tietokone on käyttämättömänä, television ollessa sammuksissa se ei mene päälle hiirtä liikuttaessa/näppäimistöstä.

    Googlettelin että mitenkä saisin television sammumaan/käynnistymään niinkuin tavallisen näytön. Apua ei oikein löytynyt muutakuin tältä sivulta: LG TV Hacks. Olen kokeillut ja yrittänyt muokata tuota koodia, mutta se ei vain löydä televisiota, antaa vain I/O virhettä. Television ja tietokoneen välissä on ristiinkytketty-kaapeli. dmesg | grep ttyS näyttää:

    [ 1.040352] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
    [ 1.136919] 00:0a: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
    [ 26.789632] ttyS0: LSR safety check engaged!
    [ 26.790347] ttyS0: LSR safety check engaged!

    Käytössä Ubuntu 12.04.
    Televisio LG 32LV355N, ohjekirja (pdf).

    Lisätietoja annan kunhan vain kerrotaan, että mitä ja miten tiedot saan näkyviin.
     
  2. Ysf

    Ysf Active member

    Joined:
    Oct 2, 2005
    Messages:
    1,954
    Likes Received:
    1
    Trophy Points:
    68
    ensimmäiseksi tulee mieleen, että onko käyttäjällä (jolla komentoja ajelet) riitävät oikeudet sarjaporttin eli /dev/ttys[0123]:een. yleensä nuo ttys:t on puhtaasti rootin omistuksessa.

    Sitten vielä kannattaa varmistaa, että portin "tietoliikenneasetukset" (ks. linkkaamasi ohjeen sivu 109) on kohdallaan. jos linuxi tunkee tavaraa porttiin tavalla jota telkku ei ymmärrä, niin homma ei pelitä. stty-komennolla voi noita muutella.. telkkuusi sopivat asetukset menee kai näin.. stty -9600 -cs8 -F /dev/ttys0

    LSR safety check engaged! tarkoittaa, että linuxin sarjaportin automaaginen tunnistus ei välttämättä ole osunut kohdalleen. kannattaa varmistaa, että tuo ttyS0:n asetukset on kohdallaan: ajele komento setserial -g /dev/ttys[0123] ja katsotaan mitä se sanoo. nyt jos tuo linuxtvhacksin skriptinpätkä alkaa tunkea tavaraa ttys0:aan (jota ei näköjään jekkase) niin sittenhän se on siinä.

    testiksi voit vetää vaikkapa siten, että laitat tuon ttys0:n toimimaan ttys1:n "säädöillä": komento voisi olla jotain tälläistä setserial -F /dev/ttyS0 port 0x2f3 irq 3 uart 16550A. jos tuota testaat, niin silloin ei kannattane käyttää ttys0:aan ja ttys1:een liitettyjä laitteita yhtäaikaa!
     
  3. patkis

    patkis Member

    Joined:
    Sep 11, 2010
    Messages:
    40
    Likes Received:
    0
    Trophy Points:
    16
    Näyttäisi nuo ttyS:t olevan tosiaan rootin omistuksessa. Kokeilin chown:lla laittaa ttyS[0123] ne itselleni mutta ei näyttänyt olevan vaikutusta mihinkään, uudelleen käynnistyksen yhteydessä ne taas olivat rootin omistuksessa.

    Tuo kirjoittamasi stty-komento ei toiminut, mutta näin se toimi: stty -F /dev/ttyS0 9600 cs8, muttei auttanut. Komento setserial -g /dev/ttyS[0123] näyttää:
    /dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
    /dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
    /dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
    /dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

    Emolevyllä ei ole kuin yksi COM-portti, missä on tällä hetkellä se kaapeli joka menee televisioon ja yksi tulostinportti jossa ei ole mitään kiinni.

    EDIT: Viestin tiedot päivitetty koska, muutin BIOS:sta COM-portin IRQ:n 3:sta -> 4:n. Ja dmesg | grep ttyS näyttää nyt:
    [ 1.030623] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
    [ 1.140516] 00:0a: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
     
    Last edited: Jun 29, 2012
  4. Ysf

    Ysf Active member

    Joined:
    Oct 2, 2005
    Messages:
    1,954
    Likes Received:
    1
    Trophy Points:
    68
    hmm.. paha nakki.

    Oletko kokeillut jotain softaa, voisi tehdä ns. "loopback" -testin sarjaportille.. sillä näkisi lähettääkö tuo portti yleensäkkään mitään minnekkään eli selviäisi onko vika koneessa (linuxin sarjaportissa) vai tellussa..

    Toinen mahdollisuus testaukseen on sitten hieman "hardcore" -mallia: googlettamalla löytyi kikka (http://www.linuxquestions.org/questions/linux-hardware-18/serial-loop-back-test-doesnt-work-645657/) josta alla vapaa suomennos.

    tee ns. "silta" (jumpperi) kaapelin pinnien 2 (receive data) ja 3 (transmit data) välille (tuossa tellun käyttöohjeessa on kaaviokuva "narttu -sarjaportista", ylärivin paikat on 1-5, eli "silta" tulisi kaaviokuvan paikkoihin menevien pinnien välille) ja sitten lähetä jotain komentoa sinne sarjaportiin. Lähettämäsi komento pitäisi tulla silloin bumerangina takaisin. HUOM! jos käytät sitten stty:n "echo" vaihtoehtoa (stty -F /dev/ttyS0 -echo) niin se luo sitten päättymättömän "luupin" joka ei lopu ennen kuin nappaat ns. "silta-jumpperin" pois!
     
  5. patkis

    patkis Member

    Joined:
    Sep 11, 2010
    Messages:
    40
    Likes Received:
    0
    Trophy Points:
    16
    Vika on nyt siis Ubuntussa. Kokeilin suoraan tuota hyppylanka kikkaa (komennolla stty -F /dev/ttyS0 -echo), ei näyttänyt elonmerkkejä. Tarkistin nyt sitten samalla myös sarjaportin toimivuuden Windows 7:lla, latasin ohjelman jolla tein "loopback" testin, ja se onnistui. LGrs232.com.sta löytyi testiohjelma jolla saa testattua toimiiko esim. television sammuttaminen, ja hienosti televisio sammui kyseisellä ohjelmalla.

    En pikaisella googlettelulla löytänyt ohjelmaa jolla voisi tehdä "loopback" -testin tällä Ubuntulla, täytynee jatkaa etsimistä.
     
    Last edited: Jun 29, 2012
  6. Ysf

    Ysf Active member

    Joined:
    Oct 2, 2005
    Messages:
    1,954
    Likes Received:
    1
    Trophy Points:
    68
    itse löysin javalla (!) kirjoitetun pätkän osoitteesta http://embeddedfreak.wordpress.com/2008/08/29/rxtx-loopback-program2/

    tuolla on yksi kohta mitä pitäisi hieman muuttaa.. eli riville loopbackTest.connect("/dev/ttyUSB0"); pitäisi laittaa luonnollisesti se testattava portti (ttys0)

    pitäs toimia linuxissa, joka osaa ajella javaa.
     
    Last edited: Jun 30, 2012
  7. patkis

    patkis Member

    Joined:
    Sep 11, 2010
    Messages:
    40
    Likes Received:
    0
    Trophy Points:
    16
    Nyt ainakin pystyn sammuttamaan/käynnistämään television, muita komentoja en ole vielä kokeillut, koska niitä en luultavasti tule tarvitsemaan. Valitettavasti en osannut ajaa tuota koodia, sain kuitenkin testattua sarjaportin toimivuuden hyppylangalla ja seuraavien ohjeiden avulla:

    # initialize serial port
    stty 2000000 -ixon icanon </dev/ttyUSB0

    # check settings
    stty -a -F /dev/ttyUSB0

    # in one terminal - read from serial port
    while (true) do cat -A /dev/ttyUSB0 ; done

    # in other terminal - write to serial port
    echo "1234567890" > /dev/ttyUSB0

    # back to first terminal, I now have:
    # $ while (true) do cat -A /dev/ttyUSB0 ; done
    # 1234567890$


    Vaihdoin tietysti "ttyUSB0:sta -> ttyS0:llaan" ja stty 2000000 -ixon icanon </dev/ttyUSB0 muutin stty 9600 </dev/ttyS0. Linkki viestiin josta yllä olevat ohjeet löytyivät.

    Kokeilin eri stty:n parametrejä ja totesin stty ispeed 9600 ospeed 9600 cs8 </dev/ttyS0 toimivaksi. Television saan sammutettua terminaalin kautta komennolla "echo "ka 1 00" > /dev/ttyS0" ja vastaavasti laitettua päälle "echo "ka 1 01" > /dev/ttyS0".

    Ensimmäisessä viestissäni mainestamani LG TV Hacksin skripti näyttää vieläkin "Could not find TV". Syytä tähän en tiedä, mutta en taida enään tuota skriptiä tarvita. Ja toisin kuin tuossa skriptissä, oma televisioni ei päällä olleessaan palauta arvoa "a 01 OK01" vaan "a 01 OK01x".

    Nyt pääsen järkeilemään kuinka saan television sammuun silloin kun sen pitäisi.. Kirjoittelen tänne sitten jos tarvitsen apua. Ja kiitos avustasi :)
     

Share This Page