[#] Tuner TV Kworld SAA7134 + pilot

( Ostatnio zmieniony sob., 14/06/2008 - 11:50 )
 

Zacznijmy od uruchomienia naszego tunera.

Zanim ustalisz jaki typ karty powinieneś ustawić aby tuner działał poprawnie, możesz stracić trochę czasu jednak to robisz tylko raz.
Później zapisujesz sobie numerek i już nigdy więcej nie musisz eksperymentować.

info: cat /proc/asound/cards – pozwala na sprawdzenie kolejności urządzeń dźwiękowych

do pliku /etc/modprobe­.d/aliases dodać na początku

alias char-major-81 videodev
alias char-major-81-0 saa7134
alias char-major-81-64 saa7134
options saa7134 card=32 i2c_scan=1 ir_debug=1
options tda9887 secam=d port2=0 port1=1

gdzie card=… jest typ polem które Cię interesuje i które będziesz zmieniał.

ir_debug=1 bedzie nam potrzebna czasowo, później to wyłącz.
Pozwoli Ci to na czas testów zobaczyć w dmesg coś takiego:

[17182716.012000] saa7134[0]/ir: build_key gpio=0x80407f mask=0x1f data=31
[17182716.060000] saa7134[0]/ir: build_key gpio=0x804010 mask=0x1f data=16
[17182716.348000] saa7134[0]/ir: build_key gpio=0x80407f mask=0x1f data=31
[17182723.692000] saa7134[0]/ir: build_key gpio=0x804007 mask=0x1f data=7
[17182723.740000] saa7134[0]/ir: build_key gpio=0x80407f mask=0x1f data=31
[17182723.836000] saa7134[0]/ir: build_key gpio=0x804007 mask=0x1f data=7
[17182723.932000] saa7134[0]/ir: build_key gpio=0x80407f mask=0x1f data=31

Czyli że twoje klawisze są czytane i jakie to.

Lecimy dalej. Następnie:

sudo rmmod saa7134_alsa
sudo rmmod saa7134

sudo modprobe saa7134_alsa
sudo modprobe saa7134

polecenie dmesg zwróci nam coś na wzór:

[17179590.512000] saa7130/34: v4l2 driver version 0.2.14 loaded
[17179590.512000] saa7134[0]: found at 0000:02:07.0, rev: 1, irq: 217, latency: 32, mmio: 0xfb00a000
[17179590.512000] saa7134[0]: subsystem: 1131:0000, board: AVACS SmartTV [card=32,insmod option]
[17179590.512000] saa7134[0]: board init: gpio is 80407f
[17179590.512000] input: saa7134 IR (AVACS SmartTV) as /class/input/input3
[17179590.648000] saa7134[0]: Huh, no eeprom present (err=-5)?
[17179590.756000] saa7134[0]: i2c scan: found device @ 0xc0  [tuner (analog)]
[17179590.804000] tuner 2-0060: All bytes are equal. It is not a TEA5767
[17179590.804000] tuner 2-0060: chip found @ 0xc0 (saa7134[0])
[17179590.804000] tuner 2-0060: type set to 5 (Philips PAL_BG (FI1216 and compatibles))
[17179590.808000] saa7134[0]: registered device video0 [v4l2]
[17179590.808000] saa7134[0]: registered device vbi0
[17179590.808000] saa7134[0]: registered device radio0
[17179590.832000] saa7134 ALSA driver for DMA sound loaded
[17179590.832000] saa7134[0]/alsa: saa7134[0] at 0xfb00a000 irq 217 registered as card -1
[17179591.512000] saa7134[0]/ir: build_key gpio=0x80407f mask=0x1f data=31

AVACS SmartTV to nie typ mojej karty TV ale działa wszystko bez zarzutów.

Jeśli masz problem z ustawieniem typu karty, skorzystaj z poniższej listy:

saa7134: card=0 -> UNKNOWN/GENERIC
saa7134: card=1 -> Proteus Pro [philips reference design] 1131:2001 1131:2001
saa7134: card=2 -> LifeView FlyVIDEO3000 5168:0138 4e42:0138
saa7134: card=3 -> LifeView FlyVIDEO2000 5168:0138
saa7134: card=4 -> EMPRESS 1131:6752
saa7134: card=5 -> SKNet Monster TV 1131:4e85
saa7134: card=6 -> Tevion MD 9717
saa7134: card=7 -> KNC One TV-Station RDS / Typhoon TV Tune 1131:fe01 1894:fe01
saa7134: card=8 -> Terratec Cinergy 400 TV 153b:1142
saa7134: card=9 -> Medion 5044
saa7134: card=10 -> Kworld/KuroutoShikou SAA7130-TVPCI
saa7134: card=11 -> Terratec Cinergy 600 TV 153b:1143
saa7134: card=12 -> Medion 7134 16be:0003
saa7134: card=13 -> Typhoon TV+Radio 90031
saa7134: card=14 -> ELSA EX-VISION 300TV 1048:226b
saa7134: card=15 -> ELSA EX-VISION 500TV 1048:226b
saa7134: card=16 -> ASUS TV-FM 7134 1043:4842 1043:4830 1043:4840
saa7134: card=17 -> AOPEN VA1000 POWER 1131:7133
saa7134: card=18 -> BMK MPEX No Tuner
saa7134: card=19 -> Compro VideoMate TV 185b:c100
saa7134: card=20 -> Matrox CronosPlus 102b:48d0
saa7134: card=21 -> 10MOONS PCI TV CAPTURE CARD 1131:2001
saa7134: card=22 -> Medion 2819/ AverMedia M156 1461:a70b 1461:2115
saa7134: card=23 -> BMK MPEX Tuner
saa7134: card=24 -> KNC One TV-Station DVR 1894:a006
saa7134: card=25 -> ASUS TV-FM 7133 1043:4843
saa7134: card=26 -> Pinnacle PCTV Stereo (saa7134) 11bd:002b
saa7134: card=27 -> Manli MuchTV M-TV002
saa7134: card=28 -> Manli MuchTV M-TV001
saa7134: card=29 -> Nagase Sangyo TransGear 3000TV 1461:050c
saa7134: card=30 -> Elitegroup ECS TVP3XP FM1216 Tuner Card( 1019:4cb4
saa7134: card=31 -> Elitegroup ECS TVP3XP FM1236 Tuner Card 1019:4cb5
saa7134: card=32 -> AVACS SmartTV
saa7134: card=33 -> AVerMedia DVD EZMaker 1461:10ff

Jeśli na powyższej liście nie ma Twojej karty, pozostaje Ci próbować do skutku, przy czym po zmianie wpisu card=XX musisz zawsze wyładować i załadować moduł ponownie.

Sprawdzaj poleceniem dmesg co się dzieje. Dodatkowo korzystaj z jakiegoś programu do TV np.: TVTime w celu sprawdzenia poprawności wyświetlania i dźwięku.

Jeśli Twój tuner już działa prawidłowo, przejdźmy dalej.

Instalacja LIRC

LIRC (http://www.lirc.org/) – zajmuje się obsługą głównie pilotów i odbiorników na podczerwień.
Oficjalne pakiety są w repozytorium Ubuntu (EdgyEft), jednak mogą one nie być odpowiednie dla niektórych odbiorników, dlatego warto skorzystać z nieoficjalnego repozytorium.

WAŻNE: wymagane kernel headers oraz zestaw narzędzi do kompilacji.

Do pliku /etc/apt/sources­.list dodajemy nowe wpisy repozytoriów:

deb http://home.eng.iastate.edu/~superm1 edgy lirc
deb-src http://home.eng.iastate.edu/~superm1 edgy lirc

importujemy klucz gpg:

wget http://home.eng.iastate.edu/~superm1/80DF6D58.gpg -O- | sudo apt-key add -

uaktualniamy baze pakietów:

sudo apt-get update

instalacja:

sudo apt-get install lirc lirc-modules-source module-assistant

Module-assistant – prosty program pomagający przy kompilacji modułów jądra.

konfiguracja modułów LIRC:

sudo dpkg-reconfigure lirc-modules-source

Z listy modułów wybierz gpio oraz i2c, lub inne w zależności od potrzeb.
Po ich wybraniu klikamy OK, w następnie na pytanie czy chcemy automatycznie skompilować moduły, wybieramy NIE, oraz plik konfiguracyjny LIRC taki jaki dostarcza opiekun pakietu.

I kompilujemy moduły

sudo m-a update,prepare
sudo m-a a-i lirc

Konfiguracja Pilota naszego tunera

polecenie:

cat  /proc/bus/input/devices

Wyświetli listę urządzeń z których możesz przechwytywać sygnały. Tuner na tej liście będzie wyglądał mniej więcej tak:

I: Bus=0001 Vendor=1131 Product=0000 Version=0001
N: Name="saa7134 IR (AVACS SmartTV)"
P: Phys=pci-0000:02:07.0/ir0
S: Sysfs=/class/input/input14
H: Handlers=kbd event2
B: EV=100003
B: KEY=2c0814 100004 0 0 0 4 2008000 2090 2001 1e0000 4400 0 ffc

Ważnym elementem jest pole H: , gdzie interesuje nas pozycja eventXX

W porządku. Teraz przejdźmy do ustawienia LIRCa. W tym celu zmień dane w pliku /etc/lirc/har­dware.conf

# Arguments which will be used when launching lircd
LIRCD_ARGS="-d /dev/input/event2"

#Don't start lircmd even if there seems to be a good config file
START_LIRCMD=false

#Try to load appropriate kernel modules
LOAD_MODULES=false

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="dev/input"
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead
DEVICE="/dev/lirc"
MODULES="lirc_dev lirc_gpio"

# Default configuration files for your hardware if any
LIRCD_CONF="/etc/lirc/lircd.conf"
MODULES="UNCONFIGURED"
LIRCMD_CONF="UNCONFIGURED"

Podmień plik konfiguracyjny daemona LIRC

sudo cp /usr/share/lirc/remotes/kworld/lircd.conf.kworld /etc/lircd.conf

lub ze strony internetowej: http://lirc.sourceforge.net/remotes/

Oczywiście ustawienia nie będą takie jak chcesz, ale tym się nie martw, zaraz to zmienimy.

Wykonujemy:

sudo /etc/init.d/lirc start

w celu uruchomienia daemona LIRC.

W dmesg powinniśmy ujrzeć:

[17180605.964000] lirc_dev: IR Remote Control driver registered, at major 61

lub podobne zjawisko.

Tak. Teraz wiemy że działa już nasz tuner i działa nasz LIRC z obsługą portu IR.

Uczenie kodów pilota

Stwórzmy zatem plik konfiguracyjny który będzie oddawał w pełni rozkład przycisków naszego pilota. W tym celu wykonaj:

irrecord -H dev/input -d /dev/input/event2 /tmp/lircd.conf

UWAGA: Może nie być tak kolorowo gdyż ten cały event może się sam zmieniać i raz być event1 lub event2 itd, a co jeśli ustawi się pod nasz event2 np.: myszka? Przestanie działać myszka :)

Żeby temu zapobiec, skonfiguruj plik /etc/init.d/lir­c tak:

echo -n "Starting lirc daemon:"
if $START_LIRCD; then
 echo -n " lircd"
 LIRCD_ARGS=`build_args $LIRCD_ARGS`

 ewent=`cat /proc/bus/input/devices|grep -3 saa7134|grep "H:"|mawk '{print $3}'`
 start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- $LIRCD_ARGS -d /dev/input/$ewent \
      < /dev/null
fi

Oczywiście saa7134 zamień na typ swojej karty moze być ona widziane inaczej, a sprawdzisz to wpisując w konsoli:

cat /proc/bus/input/devices

Jeśli zdecydujesz sie na taki zabieg musisz dodatkowo w pliku /etc/lirc/har­dware.conf zakomentować linijkę LIRCD_ARGS=„.....“, gdyż już nie będziemy z tego korzystać.

Teraz zaczynamy zabawe w przyciskanie guziczków :)

irrecord -  application for recording IR-codes for usage with lirc

Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)

This program will record the signals from your remote control
and create a config file for lircd.

...

Press RETURN to continue.

Wciskamy ENTER i dalej:

Hold down an arbitrary button.

W tym miejscu program irrecord chce abyśmy przytrzymali przycisk pilota ( w celu jakiejś weryfikacji? )

Teraz jak trzymasz przycisk pilota lecą sobie kropeczki .................. i już:

Found gap length: 109729
Now enter the names for the buttons.

Irrecord znalazł to co chciał i teraz może nas wysłuchać. Prosi nas o wpisanie nazwy dla kodu przycisku który mu za chwilę prześlemy.

Please enter the name for the next button (press <ENTER> to finish recording)
POWER

Wpisaliśmy POWER i zatwierdzamy Enterem.

Now hold down button "POWER".

Teraz chce abyśmy przytrzymali przycisk pilota dla którego wpisaliśmy nazwę POWER.

i tak dalej. Jeśli skończymy wciskamy po prostu pusty Enter i tyle.

Please enter the name for the next button (press to finish recording)
# Wciskamy ENTER
Checking for toggle bit.
Please press an arbitrary button repeatedly as fast as possible (don’t hold it down!).
irrecord: no data for 10 secs, aborting
No toggle bit found.
Successfully written config file.

W katalogu /tmp/ znajduje się teraz nasz plik z kodami pilota który podmieniamy daemonowi LIRC

sudo cp /tmp/lircd.conf /etc/lirc/lircd.conf

Jeśli po drodze zdarzyło nam się coś takiego:

irrecord: gap not found, can't continue
irrecord: closing '/dev/input/event2'

Oznacza to że nie irrecord nie mógł dokonać jakiejś weryfikacji (patrz wyżej), trzeba go jeszcze raz uruchomić i przytrzymać mu przycisk w celu tej weryfikacji :)

Dla mojego pilota plik konfiguracyjny lircd.conf wygląda tak:

## Konfiguracja mojego pilota saa7134 Kworld PixelView.

begin remote

  name           KWORLD-aa7134
  bits           16
  eps            30
  aeps          100

  one             0     0
  zero            0     0
  pre_data_bits   16
  pre_data        0x8001
  gap             147838
  toggle_bit      0


      begin codes
          power                    0x0074
          source                   0x00E2
          scan                     0x00D9
          mute                     0x0071
          tv/fm                    0x0182
          1                        0x0002
          2                        0x0003
          3                        0x0004
          4                        0x0005
          5                        0x0006

          6                        0x0007
          7                        0x0008
          8                        0x0009
          9                        0x000A
          0                        0x000B
          plus                     0x0195
          recall                   0x018B
          record                   0x00A7
          stop                     0x0080
          play                     0x00CF
          zoom                     0x0174
          minimize                 0x0184
          ch+                      0x0192
          ch-                      0x0193
          vol+                     0x0073
          vol-                     0x0072
          mts                      0x0162
          snap                     0x00A4
          func                     0x008D
          func+                    0x004E
          func-                    0x004A
          reset                    0x00AD
          fm_freq-                 0x004A
          fm_freq+                 0x004E
          fm_scan-                 0x0193
          fm_scan+                 0x0192
      end codes

end remote

Teraz restart LIRCa

sudo /etc/init.d/lirc restart

i zaczynamy testować czy wszystko działa.

Ustawienia programów

Jeśli chcemy aby kody przycisków działały dla poszczególnych aplikacji, tworzymy ~/.lircrc
Aby pilot zadziałał w mplayer musimy skompilowac go z USE=„lirc“, inne programy które nie mają w sobie wsparcia dla LIRC (np.: TVTime) muszą mieć uruchomionego demona irexec, który znajduje się w pakiecie LIRC.

irexec -d ~/.lircrc   <-- wymane tylko dla tych programów bez wsparcia dla LIRCa

Przykładowe pliki konfiguracyjne w załącznikach

Aplikacje, które mają wbudowaną obsługę lirc, np. XawTV nie potrzebują żadnego pliku konfiguracyjnego. Jeśli jednak wykorzystamy nasz plik ~/.lircrc do konfiguracji innych aplikacji, to dla XawTV musimy dodać w nim wpis:

# xawtv
begin
  prog = xawtv
  config = eventmap
end

Konfiguracja LIRC do poruszania myszką

edytuj plik /etc/X11/xorg­.conf i dodaj w nim taką sekcję:

Section "InputDevice"
        Identifier  "LIRC-Mouse"
        Driver      "mouse"
        Option      "Device" "/dev/lircm"
        Option      "Protocol" "IntelliMouse"
        Option      "SendCoreEvents"
        Option      "Buttons" "5"
        Option      "ZAxisMapping" "4 5"
EndSection

a w sekcji „ServerLayout“ dopisz poniższe:

InputDevice    "LIRC-Mouse" "AlwaysCore"

Teraz tylko modyfikacja pliku /etc/lirc/lir­cmd.conf

# lircmd config file
#

# protocol to use
PROTOCOL IMPS/2


ACCELERATOR 2 30 5

# aktywowanie stale wlacz/wylacz
TOGGLE_ACTIVATE * func

#aktywowanie do czasu uzycia przycisku spoza def
#ACTIVATE * func

# ruch myszki
MOVE_N * 2
MOVE_NE * 3
MOVE_E * 6
MOVE_SE * 9
MOVE_S * 8
MOVE_SW * 7
MOVE_W * 4
MOVE_NW * 1

# scroll
MOVE_IN * ch+
MOVE_OUT * ch-

# przyciski myszki
BUTTON1_CLICK * 0
BUTTON2_CLICK * plus
BUTTON3_CLICK * recall

Uruchomienie lircmd może odbywać się automatycznie. W tym celu modyfikuj plik /etc/lirc/har­dware.conf

START_LIRCMD=true

Przydatne linki związane z LIRCem:

https://help.ubuntu.com/…_Lirc_Feisty
https://help.ubuntu.com/…ll_Lirc_Edgy

http://gentoo-wiki.com/HOWTO_LIRC
http://tvtime.sourceforge.net/lirc.html

http://www.lirc.org/html/
http://www.lirc.org/…chnical.html
http://www.lirc.org/…rxevent.html
http://www.lirc.org/…nfigure.html

http://www.fullcustom.es/mod2_resw.html
http://www.turbobit.com/lirc.html

Twoja ocena: Brak Średnio: 5 (3 głosy)

Dodaj nową odpowiedź

Informacja:

Osoby zamieszczające wypowiedzi naruszające prawo lub prawem chronione dobra osób trzecich, mogą ponieść z tego tytułu odpowiedzialność karną lub cywilną. Upewnij się, że twoja wypowiedź nie godzi w niczyje mienie.

  • Internal paths in single or double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or path. Paths to files in single or double quotes, written as "files:somefile.ext", for example, are replaced with the appropriate URL that can be used to download the file.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <strong> <blockquote> <code>
  • Znaki końca linii i akapitu dodawane są automatycznie.

Więcej informacji na temat formatowania

Łapirobot
Proszę odpowiedzieć
Z
H
t
j
a
n
b
7
C
R
Enter the code without spaces and pay attention to upper/lower case.