Workaround: add the cx88xx module option i2c_scan=1 Copy the attached file to /etc/modprobe.d/cx88xx.conf Analysis: Whilst analysing the inter-dependent modules that rely on cx88xx I did some experimentation with controlling the modprobe order using a custom /etc/modprobe.d/cx88xx.conf with various "install..." directives. Using this I was able to successfully initialise the device on several occassions, but never reliably. That lead to examining the i2c related kernel debug messages and that gave me a hunch to try the cx88xx option "i2c_scan" which does an i2c bus scan when the module is inserted, rather than later. The scan is forced immediately after the call to i2c_transfer() in cx88_i2c_init(). This appears to be a viable workaround for now whilst a permanent solution is developed in the kernel code. [ 23.868451] cx88/0: cx2388x v4l2 driver version 0.0.9 loaded [ 23.868540] cx8800 0000:00:0d.0: enabling device (0014 -> 0016) [ 23.868562] cx8800 0000:00:0d.0: PCI INT A -> Link[LNKF] -> GSI 11 (level, low) -> IRQ 11 [ 23.868582] cx88[0]: quirk: PCIPCI_TRITON -- set TBFX [ 23.868586] cx88[0]: quirk: PCIPCI_ALIMAGIK -- latency fixup [ 23.868591] cx88[0]: setting pci latency timer to -1 [ 23.871412] cx88[0]: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=68,autodetected], frontend(s ): 2 [ 23.871419] cx88[0]: TV tuner type 63, Radio tuner type -1 [ 23.871423] cx88[0]: cx88_reset [ 23.876122] cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.9 loaded [ 24.132123] cx88[0]: i2c register ok [ 24.132132] cx88[0]: i2c init: enabling analog demod on HVR1300/3000/4000 tuner ... [ 24.422189] cx88[0]: i2c scan: found device @ 0xa [???] [ 24.507504] cx88[0]: i2c scan: found device @ 0x10 [???] ... [ 24.781712] cx2388x alsa driver version 0.0.9 loaded ... [ 26.044629] cx88[0]: i2c scan: found device @ 0x86 [tda9887/cx22702] [ 26.100345] cx88[0]: i2c scan: found device @ 0xa0 [eeprom] [ 26.129431] cx88[0]: i2c scan: found device @ 0xc2 [tuner (analog/dvb)] [ 26.130647] cx88[0]: i2c scan: found device @ 0xc6 [???] [ 26.206461] i2c-core: driver [tuner] using legacy suspend method [ 26.206470] i2c-core: driver [tuner] using legacy resume method ... [ 26.317057] tda9887 1-0043: creating new instance [ 26.317066] tda9887 1-0043: tda988[5/6/7] found [ 26.317643] tuner 1-0043: Tuner 74 found with type(s) Radio TV. [ 26.335103] tuner 1-0061: Tuner -1 found with type(s) Radio TV. [ 26.364884] tveeprom 1-0050: full 256-byte eeprom dump: [ 26.364889] tveeprom 1-0050: 00: 17 00 00 00 70 00 02 69 84 09 00 04 20 77 00 40 [ 26.364905] tveeprom 1-0050: 10: ac f1 12 f0 73 05 21 00 84 08 00 06 91 0d 01 00 [ 26.364921] tveeprom 1-0050: 20: 50 28 89 72 07 70 73 09 19 7f 73 0a f4 64 72 0b [ 26.364936] tveeprom 1-0050: 30: 2f 72 0e 01 72 0f 01 72 10 01 72 11 ff 79 2f 00 [ 26.364951] tveeprom 1-0050: 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 26.364965] tveeprom 1-0050: 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 26.364980] tveeprom 1-0050: 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 26.364995] tveeprom 1-0050: 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 26.365009] tveeprom 1-0050: 80: 00 00 00 00 84 09 00 04 20 77 00 40 ac f1 12 f0 [ 26.365024] tveeprom 1-0050: 90: 73 05 21 00 84 08 00 06 91 0d 01 00 50 28 89 72 [ 26.365039] tveeprom 1-0050: a0: 07 70 73 09 19 7f 73 0a f4 64 72 0b 2f 72 0e 01 [ 26.365054] tveeprom 1-0050: b0: 72 0f 01 72 10 01 72 11 ff 79 2f 00 00 00 00 00 [ 26.365069] tveeprom 1-0050: c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 26.365083] tveeprom 1-0050: d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 26.365098] tveeprom 1-0050: e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 26.365113] tveeprom 1-0050: f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 26.365131] tveeprom 1-0050: Tag [04] + 8 bytes: 20 77 00 40 ac f1 12 f0 [ 26.365142] tveeprom 1-0050: Tag [05] + 2 bytes: 21 00 [ 26.365148] tveeprom 1-0050: Tag [06] + 7 bytes: 91 0d 01 00 50 28 89 [ 26.365158] tveeprom 1-0050: Tag [07] + 1 bytes: 70 [ 26.365163] tveeprom 1-0050: Tag [09] + 2 bytes: 19 7f [ 26.365169] tveeprom 1-0050: Tag [0a] + 2 bytes: f4 64 [ 26.365175] tveeprom 1-0050: Tag [0b] + 1 bytes: 2f [ 26.365181] tveeprom 1-0050: Tag [0e] + 1 bytes: 01 [ 26.365186] tveeprom 1-0050: Tag [0f] + 1 bytes: 01 [ 26.365191] tveeprom 1-0050: Tag [10] + 1 bytes: 01 [ 26.365197] tveeprom 1-0050: Not sure what to do with tag [10] [ 26.365201] tveeprom 1-0050: Tag [11] + 1 bytes: ff [ 26.365206] tveeprom 1-0050: Not sure what to do with tag [11] [ 26.365213] tveeprom 1-0050: Hauppauge model 69009, rev B2A0, serial# 1241516 [ 26.365219] tveeprom 1-0050: MAC address is 00:0d:fe:12:f1:ac [ 26.365225] tveeprom 1-0050: tuner model is Philips FMD1216ME (idx 100, type 63) [ 26.365231] tveeprom 1-0050: TV standards PAL(B/G) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xf4) [ 26.365237] tveeprom 1-0050: audio processor is CX882 (idx 33) [ 26.365242] tveeprom 1-0050: decoder processor is CX882 (idx 25) [ 26.365247] tveeprom 1-0050: has radio, has IR receiver, has no IR transmitter [ 26.365252] cx88[0]: hauppauge eeprom: model=69009 [ 26.421553] tuner-simple 1-0061: creating new instance [ 26.421565] tuner-simple 1-0061: type set to 63 (Philips FMD1216ME MK3 Hybrid Tuner) [ 27.092128] Registered IR keymap rc-hauppauge [ 27.092774] input: cx88 IR (Hauppauge WinTV-HVR400 as /devices/pci0000:00/0000:00:0d.0/rc/rc0/input5 [ 27.093190] rc0: cx88 IR (Hauppauge WinTV-HVR400 as /devices/pci0000:00/0000:00:0d.0/rc/rc0 [ 27.097533] input: MCE IR Keyboard/Mouse (cx88xx) as /devices/virtual/input/input6 [ 27.099815] rc rc0: lirc_dev: driver ir-lirc-codec (cx88xx) registered at minor = 0 [ 27.099834] cx88[0]/0: found at 0000:00:0d.0, rev: 5, irq: 11, latency: 255, mmio: 0xca000000 [ 27.099860] btcx: riscmem alloc [1] dma=2b408000 cpu=eb408000 size=64 [ 27.099875] btcx: riscmem alloc [2] dma=2be01000 cpu=ebe01000 size=64 [ 27.184145] wm8775 1-001b: chip found @ 0x36 (cx88[0]) [ 27.191688] cx88[0]: set_tvnorm: "NTSC-M" fsc8=28636360 adc=28636363 vdec=28636360 db/dr=28636360/28636360 [ 27.191701] cx88[0]: set_pll: MO_PLL_REG 0x00fffffe [old=0x00f15f18,freq=28636360] [ 27.191708] cx88[0]: pll locked [pre=2,ofreq=28636360] [ 27.191714] cx88[0]: set_tvnorm: MO_INPUT_FORMAT 0x00000001 [old=0x00000007] [ 27.191721] cx88[0]: set_tvnorm: MO_OUTPUT_FORMAT 0x181f0008 [old=0x181f0000] [ 27.191727] cx88[0]: set_tvnorm: MO_SCONV_REG 0x00020000 [old=0x00021f07] [ 27.191734] cx88[0]: set_tvnorm: MO_SUB_STEP 0x00400000 [old=0x0043e0f8] [ 27.191739] cx88[0]: set_tvnorm: MO_SUB_STEP_DR 0x00400000 [old=0x00538e38] [ 27.191746] cx88[0]: set_tvnorm: MO_AGC_BURST 0x00007270 [old=0x00006d63,bdelay=114,agcdelay=112] [ 27.191753] cx88[0]: set_tvnorm: MO_HTOTAL 0x0000038e [old=0x0000035a,htotal=910] [ 27.191761] cx88[0]: set_scale: 320x240 [TB,NTSC-M] [ 27.191765] cx88[0]: set_scale: hdelay 0x0038 (width 754) [ 27.191769] cx88[0]: set_scale: hscale 0x15b3 [ 27.191772] cx88[0]: set_scale: hactive 0x0140 [ 27.191776] cx88[0]: set_scale: vdelay 0x0018 [ 27.191779] cx88[0]: set_scale: vscale 0x1e00 [ 27.191783] cx88[0]: set_scale: vactive 0x01e0 [ 27.191789] cx88[0]: set_scale: filter 0x80009 [ 27.193599] cx88[0]/0: set_control id=0x980900(Brightness) ctrl=0x7f, reg=0x310110 val=0xff (mask 0xff) [ 27.193608] cx88[0]/0: set_control id=0x980901(Contrast) ctrl=0x3f, reg=0x310110 val=0x3f00 (mask 0xff00) [ 27.193616] cx88[0]/0: set_control id=0x980903(Hue) ctrl=0x7f, reg=0x310118 val=0xff (mask 0xff) [ 27.193624] cx88[0]/0: set_control id=0x980902(Saturation) ctrl=0x7f, reg=0x310114 val=0x5a7f (mask 0xffff) [ 27.193633] cx88[0]/0: set_control id=0x98091B(Sharpness) ctrl=0x00, reg=0x310160 val=0x00 (mask 0x380) [ 27.193640] cx88[0]/0: set_control id=0x98091D(Chroma AGC) ctrl=0x01, reg=0x310104 val=0x400 (mask 0x400) [ 27.193648] cx88[0]/0: set_control id=0x98091E(Color killer) ctrl=0x01, reg=0x310104 val=0x200 (mask 0x200) [ 27.193655] cx88[0]/0: set_control id=0x980921(Notch filter) ctrl=0x00, reg=0x310120 val=0x00 (mask 0x1800) [ 27.194701] cx88[0]/0: set_control id=0x980909(Mute) ctrl=0x01, reg=0x320594 val=0x40 (mask 0x40) [shadowed] [ 27.195729] cx88[0]/0: set_control id=0x980905(Volume) ctrl=0x3f, reg=0x320594 val=0x00 (mask 0x3f) [shadowed] [ 27.196773] cx88[0]/0: set_control id=0x980906(Balance) ctrl=0x40, reg=0x320598 val=0x00 (mask 0x7f) [shadowed] [ 27.196780] cx88[0]/0: video_mux: 0 [vmux=0,gpio=0xc4bf,0x0,0x0,0x0] [ 27.199140] cx88[0]/0: registered device video1 [v4l2] [ 27.200061] cx88[0]/0: registered device vbi0 [ 27.200679] cx88[0]/0: registered device radio0 [ 27.200818] cx88[0]/2: cx2388x 8802 Driver Manager [ 27.200837] cx88-mpeg driver manager 0000:00:0d.2: enabling device (0014 -> 0016) [ 27.200860] cx88-mpeg driver manager 0000:00:0d.2: PCI INT A -> Link[LNKF] -> GSI 11 (level, low) -> IRQ 11 [ 27.200872] cx88[0]/2: found at 0000:00:0d.2, rev: 5, irq: 11, latency: 32, mmio: 0xc8000000 [ 27.200892] btcx: riscmem alloc [3] dma=2beed000 cpu=ebeed000 size=64 [ 27.201124] cx88_audio 0000:00:0d.1: enabling device (0014 -> 0016) [ 27.201135] cx88_audio 0000:00:0d.1: PCI INT A -> Link[LNKF] -> GSI 11 (level, low) -> IRQ 11 [ 27.201147] cx88[0]/1: ALSA cx88[0]/0: found at 0000:00:0d.1, rev: 5, irq: 11, latency: 32, mmio: 0xc9000000 [ 27.201193] cx88[0]/1: CX88x/0: ALSA support for cx2388x boards [ 27.271169] cx88/2: cx2388x dvb driver version 0.0.9 loaded [ 27.271180] cx88/2: registering cx8802 driver, type: dvb access: shared [ 27.271189] cx88[0]/2: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=68] [ 27.271196] cx88[0]/2: cx2388x based DVB/ATSC card [ 27.271202] cx8802_alloc_frontends() allocating 2 frontend(s) [ 27.290436] cx88[0]/0: open dev=video1 radio=0 type=vid-cap [ 27.291597] cx88[0]/0: open dev=radio0 radio=1 type=(null) [ 27.298622] cx88[0]/0: open dev=vbi0 radio=0 type=vbi-cap [ 27.485973] tuner-simple 1-0061: attaching existing instance [ 27.485983] tuner-simple 1-0061: type set to 63 (Philips FMD1216ME MK3 Hybrid Tuner) [ 27.493201] DVB: registering new adapter (cx88[0]) [ 27.493219] DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)... [ 27.494401] DVB: registering adapter 0 frontend 1 (Conexant CX22702 DVB-T)... [ 27.515752] cx88[0]/0: video_open: setting radio device ...