Difference between revisions of "Template:Making-it-work:dvb-usb-dib0700"

From LinuxTVWiki
Jump to: navigation, search
(Keys repeated twice: Added note stating that changing toggle bit mask prevents key repeats on remote)
 
(15 intermediate revisions by 5 users not shown)
Line 1: Line 1:
== Making it Work ==
+
== Making it Work (generic for all dib0700) ==
  +
<noinclude><div style="background:#FF1F1F">
  +
This page is a Template that is included by a couple of dib0700 based devices.
  +
  +
On the left in the toolbox there is a link called '''What links here'''. Use it to find the product
  +
pages that include this template.
  +
  +
If you have product specific information, please include it on the product page.
  +
  +
See [[TerraTec Cinergy T USB XXS]] for an example of how to do this.
  +
</div></noinclude>
   
 
{{Firmware:dvb-usb-dib0700}}
 
{{Firmware:dvb-usb-dib0700}}
Line 62: Line 72:
 
{{RemoteControlSupport}}
 
{{RemoteControlSupport}}
   
==== Key Configurations ====
+
==== Keys repeated twice ====
{{RemoteControlSupport:HauppaugeSnowboard}}
 
{{RemoteControlSupport:HauppaugeSilverA415-HPG-WE-A}}
 
{{RemoteControlSupport:TerraTecGrayOrange}}
 
===== TerraTec gray-orange remote =====
 
Assuming, you have a light gray and orange remote from TerraTec.
 
 
[[Image:TerraTec_Cinergy_DT_USB_XS_Diversity-remote.jpg|thumb|50px]]
 
Apparently it is sold with the [[TerraTec Cinergy DT USB XS Diversity]], [[TerraTec Cinergy 2400i DVB-T|TerraTec Cinergy 2400i DT]], and
 
[[TerraTec Cinergy T USB XXS]].
 
 
The dvb-usb-dib0700 module needs to be loaded with the option ''dvb_usb_dib0700_ir_proto=0'' to set the IR protocol to NEC (which is used by this device).
 
 
The following keycodes should work with it, specify them in <tt>/etc/lirc/lircd.conf</tt>:
 
 
<pre>
 
# Please make this file available to others
 
# by sending it to <lirc@bartelmus.de>
 
#
 
# this config file was automatically generated
 
# using lirc-0.8.2-CVS(dev/input) on Tue May 8 23:40:09 2007
 
#
 
# contributed by Heinrich Schwietering
 
#
 
# brand:Terratec_
 
# model no. of remote control:
 
# devices being controlled by this remote: Cinergy_Hybrid_t_USB_XS
 
#
 
 
begin remote
 
 
name Cinergy_Hybrid_t_USB_XS
 
bits 16
 
eps 30
 
aeps 100
 
 
one 0 0
 
zero 0 0
 
pre_data_bits 16
 
pre_data 0x1
 
gap 135987
 
toggle_bit_mask 0x80000000
 
 
begin codes
 
onoff 0x0074
 
home 0x0066
 
dvdmenu 0x008B
 
subtitles 0x0172
 
teletext 0x0184
 
delete 0x006F
 
1 0x0002
 
2 0x0003
 
3 0x0004
 
4 0x0005
 
5 0x0006
 
6 0x0007
 
7 0x0008
 
8 0x0009
 
9 0x000A
 
0 0x000B
 
av 0x0182
 
ab 0x00A5
 
tv 0x0179
 
dvd 0x0185
 
video 0x0189
 
music 0x0188
 
pic 0x019A
 
up 0x0067
 
down 0x006C
 
left 0x0069
 
right 0x006A
 
ok 0x0160
 
epg 0x016D
 
info 0x0166
 
back 0x009E
 
vol+ 0x0073
 
vol- 0x0072
 
play 0x00CF
 
mute 0x0071
 
ch+ 0x0192
 
ch- 0x0193
 
red 0x018E
 
green 0x018F
 
yellow 0x0190
 
blue 0x0191
 
rec 0x00A7
 
stop 0x0080
 
pause 0x0077
 
last 0x0195
 
fr 0x00A8
 
ff 0x009F
 
next 0x0197
 
end codes
 
 
end remote
 
</pre>
 
 
===== Keys repeated twice =====
 
 
But there is still the problem of the key repeats for it, so that each keypress will be repeated twice. The patches, as mentioned above, may not work, but a workaround is possilbe. It is described in http://ubuntuforums.org/showthread.php?p=4253678
 
But there is still the problem of the key repeats for it, so that each keypress will be repeated twice. The patches, as mentioned above, may not work, but a workaround is possilbe. It is described in http://ubuntuforums.org/showthread.php?p=4253678
   
Line 172: Line 85:
 
end
 
end
   
So each 2nd keypress will be suppressed.
+
So each 2nd keypress will be suppressed. This works in some application but not others (e.g. vlc).
   
  +
Alternatively there is a patch for the kernel driver that solves it, it can be found [http://javierarias.wordpress.com/2008/07/01/hauppauge-wintv-nova-t-stick-y-mando-a-distancia-funcionando-%C2%A1por-fin/comment-page-1/#comment-44 here].
===== Key Mapping =====
 
Heres an example <tt>.lircrc</tt> file to map button presses to key presses, copy it into your home directory and run <tt>irxevent</tt> to control any app with the remote (if you have irkick running, quit it before starting irxevent, maybe also su, /etc/init.d/lirc restart).
 
   
  +
Finally if that doesn't work and you have the silver remote (A415-HPG-WE-A
################## irxevent Control ######################
 
  +
) then changing the lircd.conf line as follows can prevent the duplicate key presses. This has the side-effect of disabling key repeats for the remote entirely. Change
#
 
  +
<tt>toggle_bit_mask 0x80000000</tt>
# irxevent info
 
  +
to
# http://linux.die.net/man/1/irxevent
 
  +
<tt>toggle_bit_mask 0x00000000</tt>
#
 
  +
# keycode info
 
  +
Note: do not try to comment out (using #) any line in this file, or lirc won't work anymore.
# /usr/include/X11/keysymdef.h
 
  +
# http://crpppc19.epfl.ch/cgi-bin/dwww/usr/share/doc/lirc/irxevent.keys
 
  +
Do NOT do this:
#
 
  +
 
  +
#toggle_bit_mask 0x80000000
# Remote Button
 
  +
toggle_bit_mask 0x00000000
## Key Press
 
  +
 
  +
Replace the original line instead.
 
# Go
 
## F1
 
begin
 
prog = irxevent
 
button = Go
 
config = Key F1 CurrentWindow
 
end
 
 
# Power
 
## F2
 
begin
 
prog = irexec
 
button = Power
 
config = Key F2 CurrentWindow
 
# Turns monitor in Standby
 
#config = sudo vbetool dpms on ; sudo vbetool dpms off
 
end
 
 
# TV
 
## F3
 
begin
 
prog = irxevent
 
button = TV
 
config = Key F3 CurrentWindow
 
end
 
 
# Videos
 
## F4
 
begin
 
prog = irxevent
 
button = Videos
 
config = Key F4 CurrentWindow
 
end
 
 
# Music
 
## F5
 
begin
 
prog = irxevent
 
button = Music
 
config = Key F5 CurrentWindow
 
end
 
 
# Pictures
 
## F6
 
begin
 
prog = irxevent
 
button = Pictures
 
config = Key F6 CurrentWindow
 
end
 
 
# Guide
 
## F7
 
begin
 
prog = irxevent
 
button = Guide
 
config = Key F7 CurrentWindow
 
end
 
 
# Radio
 
## F8
 
begin
 
prog = irxevent
 
button = Radio
 
config = Key F8 CurrentWindow
 
end
 
 
# ArrowUp
 
## Up
 
begin
 
prog = irxevent
 
button = ArrowUp
 
config = Key Up CurrentWindow
 
end
 
 
# ArrowLeft
 
## Left
 
begin
 
prog = irxevent
 
button = ArrowLeft
 
config = Key Left CurrentWindow
 
end
 
 
# OK
 
## Return
 
begin
 
prog = irxevent
 
button = OK
 
config = Key Return CurrentWindow
 
#config = Key Select CurrentWindow
 
end
 
 
# ArrowRight
 
## Right
 
begin
 
prog = irxevent
 
button = ArrowRight
 
config = Key Right CurrentWindow
 
end
 
 
# ArrowDown
 
## Down
 
begin
 
prog = irxevent
 
button = ArrowDown
 
config = Key Down CurrentWindow
 
end
 
 
# BackExit
 
## Escape
 
begin
 
prog = irxevent
 
button = BackExit
 
config = Key Escape CurrentWindow
 
#config = Key Cancel CurrentWindow
 
end
 
 
# Menu
 
## Menu (ie. right-click)
 
begin
 
prog = irxevent
 
button = Menu
 
config = Key Menu CurrentWindow
 
end
 
 
# VolumeUp
 
## +
 
begin
 
prog = irxevent
 
button = VolumeUp
 
config = Key plus CurrentWindow
 
#config = Key KP_Add CurrentWindow
 
end
 
 
# VolumeDown
 
## -
 
begin
 
prog = irxevent
 
button = VolumeDown
 
config = Key minus CurrentWindow
 
#config = Key KP_Subtract CurrentWindow
 
end
 
 
# PrevCh
 
## Backspace
 
begin
 
prog = irxevent
 
button = PrevCh
 
config = Key BackSpace CurrentWindow
 
#config = Key Prior CurrentWindow
 
end
 
 
# Mute
 
## Enter (chosen as its below keypad-, keypad+)
 
begin
 
prog = irxevent
 
button = Mute
 
config = Key Enter CurrentWindow
 
end
 
 
# ChannelUp
 
## PageUp
 
begin
 
prog = irxevent
 
button = ChannelUp
 
config = Key Page_Up CurrentWindow
 
end
 
 
# ChannelDown
 
## PageDown
 
begin
 
prog = irxevent
 
button = ChannelDown
 
config = Key Page_Down CurrentWindow
 
end
 
 
# Record
 
## R
 
begin
 
prog = irxevent
 
button = Record
 
config = Key R CurrentWindow
 
end
 
 
# Rewind
 
## B
 
begin
 
prog = irxevent
 
button = Rewind
 
config = Key B CurrentWindow
 
end
 
 
# SkipBack
 
## Home
 
begin
 
prog = irxevent
 
button = SkipBack
 
config = Key Home CurrentWindow
 
end
 
 
# Play
 
## P
 
begin
 
prog = irxevent
 
button = Play
 
config = Key P CurrentWindow
 
end
 
 
# Pause
 
## U
 
begin
 
prog = irxevent
 
button = Pause
 
config = Key U CurrentWindow
 
#config = Key Pause CurrentWindow
 
end
 
 
# Stop
 
## S
 
begin
 
prog = irxevent
 
button = Stop
 
config = Key S CurrentWindow
 
end
 
 
# Fwdwind
 
## F
 
begin
 
prog = irxevent
 
button = Fwdwind
 
config = Key F CurrentWindow
 
end
 
 
# SkipFwd
 
## End
 
begin
 
prog = irxevent
 
button = SkipFwd
 
config = Key End CurrentWindow
 
end
 
 
# 1
 
begin
 
prog = irxevent
 
button = 1
 
config = Key 1 CurrentWindow
 
end
 
 
# 2
 
begin
 
prog = irxevent
 
button = 2
 
config = Key 2 CurrentWindow
 
end
 
 
# 3
 
begin
 
prog = irxevent
 
button = 3
 
config = Key 3 CurrentWindow
 
end
 
 
# 4
 
begin
 
prog = irxevent
 
button = 4
 
config = Key 4 CurrentWindow
 
end
 
 
# 5
 
begin
 
prog = irxevent
 
button = 5
 
config = Key 5 CurrentWindow
 
end
 
 
# 6
 
begin
 
prog = irxevent
 
button = 6
 
config = Key 6 CurrentWindow
 
end
 
 
# 7
 
begin
 
prog = irxevent
 
button = 7
 
config = Key 7 CurrentWindow
 
end
 
 
# 8
 
begin
 
prog = irxevent
 
button = 8
 
config = Key 8 CurrentWindow
 
end
 
 
# 9
 
begin
 
prog = irxevent
 
button = 9
 
config = Key 9 CurrentWindow
 
end
 
 
# Star
 
## Asterisk
 
begin
 
prog = irxevent
 
button = Star
 
config = Key asterisk CurrentWindow
 
## asterisk doesnt work for me... anybody else getting 8 instead of *??
 
#config = Key multiply CurrentWindow
 
end
 
 
# 0
 
begin
 
prog = irxevent
 
button = 0
 
config = Key 0 CurrentWindow
 
end
 
 
# #
 
## NumberSign (Hash)
 
begin
 
prog = irxevent
 
button = #
 
config = Key numbersign CurrentWindow
 
end
 
 
# Red
 
## F9
 
begin
 
prog = irxevent
 
button = Red
 
config = Key F9 CurrentWindow
 
end
 
 
# Green
 
# F10
 
begin
 
prog = irxevent
 
button = Green
 
config = Key F10 CurrentWindow
 
end
 
 
# Yellow
 
## F11
 
begin
 
prog = irxevent
 
button = Yellow
 
config = Key F11 CurrentWindow
 
end
 
 
# Blue
 
## F12
 
begin
 
prog = irxevent
 
button = Blue
 
config = Key F12 CurrentWindow
 
end
 

Latest revision as of 13:24, 8 May 2010

Making it Work (generic for all dib0700)

This page is a Template that is included by a couple of dib0700 based devices.

On the left in the toolbox there is a link called What links here. Use it to find the product pages that include this template.

If you have product specific information, please include it on the product page.

See TerraTec Cinergy T USB XXS for an example of how to do this.

Firmware

August 21, 2008 - New firmware file fixing the last cause for i2c errors and disconnects and providing a new, more modular i2c request formatting.

You will need the dvb-usb-dib0700-1.20.fw firmware file in /lib/firmware or the relevant place for your distribution.

You may need to change the name of the file to dvb-usb-dib0700-1.10.fw or create a link until the driver code reflects that change.

For archival purposes: dvb-usb-dib0700-1.10.fw firmware file

August 29,2008 - Issues with Firmware 1.20. Some issues have been found with the latest version of the firmware. Users may wish to continue to use 1.10 unless they have patched their v4l-dvb code with dib0700_new_i2c_api.patch.

November 15,2008 - Issues with Firmware 1.20.

  • The above mentioned dib0700_new_12c_api.patch is not available discretely but is now rolled into the mercurial drivers
  • dvb-usb-dib0700-1.20.fw firmware file is now stable for reception, but remote control functionality is broken; any key press is repeated until the next key is pressed. The only way to get remote control functionality presently is to roll back to 1.10 firmware and suffer the occasional disconnect.
  • The mercurial drivers have been changed so they now load 1.20 firmware. To revert to 1.10 firmware you need to rename your firmware file to dvb-usb-dib0700-1.20.fw or provide a link of that name.
  • To avoid spurious remote control signals with 1.20 firmware, you need to edit /etc/modprobe.d/options or from Ubuntu onwards /etc/modprobe.d/options.confand add:
options dvb_usb disable-rc-polling=1

November 28,2008 - i2c errors. Changes were made to the remote control drivers on November 16,2008 to correct the repeat key problem. The card is generally stable for dual tuner reception and remote control function with Firmware 1.20.

November 10,2009 - mt2060 I2C write failed. Possible regression of a driver bug raised against Ubuntu running 2.6.27-14 and 2.6.31-2.17 causing mt2060 I2C errors in MythTV useage with firmware 1.20. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/397696 Recommend check the kernel extensions listed here for Low Noise Activation and rc_polling are loaded with correct config file name for your distribution, EIT listings information is turned off until a suitable delay (500ms-1000ms)is added to a single card (not both) and the card has correctly been added to the database as two tuners (no additional NULL entries) in the mythtv recordcard table.

Drivers

It requires the dib0700 driver. Just use Mercurial by following the How to Obtain, Build and Install V4L-DVB Device Drivers instructions.

Forcing the activation of LNAs (Low Noise Amplifier)

You may have to force LNA to get this card working:

In /etc/modprobe.d/options add:

options dvb_usb_dib0700 force_lna_activation=1

Disabling the remote control sensor

You may want to disable the remote control sensor if you are using another one and want to avoid error messages in the logs:

In /etc/modprobe.d/options add:

options dvb_usb disable_rc_polling=1

All relevant kernel modules options

In /etc/modprobe.d/options add:

options [module name] [option name]=[setting]

Get the parameters list using

modinfo [name of kernel module]

The debug values are bit fields, with each bit representing a different category. Add values to turn on multiple debugging categories.

dib3000mc
debug
Turn on debugging
Values: integer
Default: 0 (off)
buggy_sfn_workaround
Enable work-around for buggy SFNs
Values: integer
Default: 0 (disabled)
mt2060
debug
Turn on debugging
Values: integer
Default: 0 (off)
dvb_usb_dib0700
force_lna_activation
Force the activation of LNAs (Low Noise Amplifier), if applicable for the device
Values: integer
Default: 0 (automatic/off)
dvb_usb_dib0700_ir_proto
Set IR protocol
Values: integer 0=NEC, 1=RC5, 2=RC6
Default: 1
debug
Set debugging level
Values: integer (bitmap) 1=info, 2=fw, 4=fwdata, 8=data
Default: 0 (none)
dvb_usb
debug
Set debugging level
Values: integer (bitmap) 1=info, 2=xfer, 4=pll, 8=ts, 16=err, 32=rc, 64=fw, 128=mem, 256=uxfer
Default: 0 (none)
disable_rc_polling
Disable remote control polling
Values: integer
Default: 0 (enabled)
force_pid_filter_usage
Force all DVB USB devices to use a PID filter, if any
Values: integer
Default: 0 (disabled)
dvb_core
dvb_net_debug
Enable debug messages
Values: integer
Default: 0 (disabled)
frontend_debug
Turn on frontend core debugging
Values: integer
Default: 0 (off)
dvb_shutdown_timeout
Wait n seconds after close() before suspending hardware
Values: integer
Default: 0
dvb_force_auto_inversion
Set whether INVERSION_AUTO is forced on
Values: integer
Default: 0 (off)
dvb_override_tune_delay
Wait n milliseconds for lock after a tuning attempt
Values: integer
Default: 0
dvb_powerdown_on_sleep
Turn LNB power off on sleep
Values: integer
Default: 1 (enabled)
cam_debug
Enable verbose debug messages
Values: integer
Default: 0 (off)
debug
Turn on debugging
Values: integer
Default: 0
dvbdev_debug
Turn on device debugging
Values: integer
Default: 0 (off)
dibx000_common
debug
Turn on debugging
Values: integer
Default: 0 (off)

Remote control support

Using evdev

As long as the evdev module is loaded, a remote that is recogniced as hid device will be treated as a usb keyboard and this means that you can avoid using lirc.

However, many of the keys on your remote may generate keycodes which are not mapped to anything, by default.

In X you can use xev to find the keycodes and xmodmap to map them to useful symbols. Unfortunately, some keys may generate keycodes that X doesn't recognize at all and the device does not support keymaps, or this would be easy to fix.

Using LIRC

Usually remote controls in linux are managed by the lirc software collection.

To get lirc up and running you need to configure some things.

  • Settings for the hardware
    • Where does lirc get its input from? aka. the DEVICE. E.g. /dev/input/event3
    • How to handle the input? aka. the DRIVER. E.g. devinput
  • Settings for mapping driver output generated by your remote (a bunch of hex numbers) to key names (something like 0..9, Volume+, Next, Record)
  • Settings for mapping key presses to actions (usually located in your .lircrc)
Mythubuntu case

On mythubuntu 10.10, you just have to add this line in /etc/udev/rules.d/65-persistent-hauppauge.rules

SUBSYSTEM=="input", KERNEL=="event*", ATTRS{idVendor}=="2040", ATTRS{idProduct}=="8400", SYMLINK+="lirc0"
Device/driver settings

Find the IR receiver's device by looking in the dmesg output for a line similar to:

input: IR-receiver inside an USB DVB receiver as /class/input/input4

Additionally, the IR receiver will be listed if you execute the command:

cat /proc/bus/input/devices

For example:

I: Bus=0003 Vendor=2040 Product=9950 Version=0100
N: Name="IR-receiver inside an USB DVB receiver"
P: Phys=usb-0000:07:01.2-1/ir0
S: Sysfs=/class/input/input4
U: Uniq=
H: Handlers=kbd event4 
B: EV=3
B: KEY=14afc336 284284d00000000 0 480058000 219040000801 9e96c000000000 90020000000ffd

In this example, the remote control gives output into /dev/input/event4.

The event number depends on your particular system and can vary.

Eventually this event number can even vary at every reboot.

You could create a new udev rule in /etc/udev/rules.d/65-persistent-hauppauge.rules.

KERNEL=="event*", ATTRS{name}=="IR-receiver inside an USB DVB receiver", SYMLINK+="input/dvb-ir"

This would make IR receivers handled by the usb_dvb framework always always be linked to /dev/input/dvb-ir.

But Linux systems running recent udev will automatically create non-varying names, a nicer and automatic way of providing a stable input event name:

$ ls -la /dev/input/by-path/
total 0
drwxr-xr-x 2 root root 140 2008-02-07 20:31 .
drwxr-xr-x 4 root root 280 2008-02-07 20:31 ..
lrwxrwxrwx 1 root root   9 2008-02-07 20:31 pci-0000:00:1a.1-usb-0:2:1.0-event-kbd -> ../event1
lrwxrwxrwx 1 root root   9 2008-02-07 20:31 pci-0000:00:1a.1-usb-0:2:1.1-event-mouse -> ../event2
lrwxrwxrwx 1 root root   9 2008-02-07 20:31 pci-0000:00:1a.1-usb-0:2:1.1-mouse -> ../mouse1
lrwxrwxrwx 1 root root   9 2008-02-07 20:31 pci-4-1--event-ir -> ../event4
lrwxrwxrwx 1 root root   9 2008-02-07 20:31 platform-pcspkr-event-spkr -> ../event3

LIRC will use it without needing a special kernel module. use the dev/input (or devinput. Check this with the command "lircd --device=help".) driver and specify the input event device in /etc/lirc/hardware.conf

# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#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=true

# 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
REMOTE_DEVICE="/dev/input/by-path/pci-4-1--event-ir"
MODULES=""

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

If you have REMOTE and TRANSMITTER sections in your hardware.conf file, they should look like this:

#Chosen Remote Control
REMOTE="Terratec Cinergy DT USB XS Diversity"
REMOTE_MODULES=""
REMOTE_DRIVER="devinput"
REMOTE_DEVICE="/dev/input/by-path/pci-1-5-event-ir"
REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf"
REMOTE_LIRCD_ARGS=""
#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""
Remote key setup

See device specific section below or try [1].


Sample .lircrc

A sample .lircrc can be found LircrcExample here.

Keys repeated twice

But there is still the problem of the key repeats for it, so that each keypress will be repeated twice. The patches, as mentioned above, may not work, but a workaround is possilbe. It is described in http://ubuntuforums.org/showthread.php?p=4253678

Simply add config = echo " > /dev/null before the main config in .mythtv/lircrc or .lircrc

 begin
  prog = mythtv
  button = Mute
  config = echo " > /dev/null
  config = |
  ...
 end

So each 2nd keypress will be suppressed. This works in some application but not others (e.g. vlc).

Alternatively there is a patch for the kernel driver that solves it, it can be found here.

Finally if that doesn't work and you have the silver remote (A415-HPG-WE-A ) then changing the lircd.conf line as follows can prevent the duplicate key presses. This has the side-effect of disabling key repeats for the remote entirely. Change toggle_bit_mask 0x80000000 to toggle_bit_mask 0x00000000

Note: do not try to comment out (using #) any line in this file, or lirc won't work anymore.

Do NOT do this:

 #toggle_bit_mask 0x80000000
 toggle_bit_mask 0x00000000

Replace the original line instead.