Template:Making-it-work:dvb-usb-dib0700
Making it work
2.6.24 re-introduces USB disconnects at random times.
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 fileis 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 install DVB device drivers instructions.
- Key repeat for dib0700 IR receiver
- Solves remote toggle bit stuff and implements repeated key feature (with repeat delay to avoid unwanted double hits) for rc-5 and nec protocols.
- Filippo Argiolas, Tue Mar 11 21:14:12 CET 2008
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
Grey top, black bottom, 45 buttons, snowboard shape.
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=="input*", ATTRS{name}=="IR-receiver inside an USB DVB receiver", SYMLINK+="input/dvb-ir"
It has been mentionned that the following line works, instead of the above line (needs confirmation and deletion of the ugly line):
KERNEL=="event*", ATTRS{name}=="IR-receiver inside an USB DVB receiver", SYMLINK+="input/dvb-ir
This would make the Hauppauge receiver always always be linked to /dev/input/dvb-ir.
But Linux systems runing 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 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 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=""
Key Configuration
Assuming, you have a silver remote, named A415-HPG-WE-A. The following keycodes should work with it, specify them in /etc/lirc/lircd.conf:
begin remote name Hauppauge A415-HPG-WE-A bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x1 gap 403983 toggle_bit_mask 0x80000000 begin codes TV 0x0179 Videos 0x0189 Music 0x0188 Pictures 0x00E2 Radio 0x0181 Guide 0x016D Off 0x0074 Go 0x0162 Up 0x0067 Down 0x006C Left 0x0069 Right 0x006A Ok 0x0160 Menu 0x008B Back/Exit 0x009E Vol+ 0x0073 Vol- 0x0072 PrevCh 0x016B Mute 0x0071 Ch+ 0x0192 Ch- 0x0193 Stop 0x0080 Record 0x00A7 Rew 0x00A8 Play 0x00CF FFW 0x00D0 Pause 0x0077 Replay 0x0195 Skip 0x0197 1 0x0002 2 0x0003 3 0x0004 4 0x0005 5 0x0006 6 0x0007 7 0x0008 8 0x0009 9 0x000A Star 0x0037 0 0x000B Char 0x0029 Red 0x018E Green 0x018F Yellow 0x0190 Blue 0x0191 end codes end remote
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.