[pvrusb2] lirc-i2c appears not to work on 24xxx devices

Mike Isely isely at isely.net
Fri Jun 30 22:32:40 CDT 2006


On Thu, 29 Jun 2006, Mike Isely wrote:

> On Thu, 29 Jun 2006, Rick Immel wrote:
>
>> Last month on the "Trouble with lirc" thread Mike left the following
>> message:
>>
>>> All:
>>>
>>> I'm sorry I've been silent about this.  For the past week I've been
>>> distracted by something else (not related to this driver).  However I
>>> _will_ dig into this.  I've got both 29xxx and 24xxx devices here so I'll
>>> validate my lirc setup with the 29xxx device first and then see where we
>>> stand with the 24xxx device.  And I'll report back what I figure out.
>>>
>>> With the 24xxx device, Hauppauge changes quite a bit of the internals.
>>> It's possible that the IR receiver changed as well - though let's hope
>>> not...
>>>
>>>    -Mike
>>
>> Have you had a chance to investigate this problem?   If so can you share
>> your results?
>> I have a 24xxx device, but I've been unable to make the remote work
>> using lirc 0.7, 0.8, or
>> 0.81 on Linux 2.6.16.
>>
>> Thanks,
>> Rick Immel
>>
>
> Rick:
>
> I'm really sorry.  I had forgotten about this.  At the moment I'm dealing
> with some issues related to kernel inclusion of the driver, but I will
> look at that after that point.  Feel free to ping me.  But just
> private-mail me about it.  No point in putting more traffic here until
> something is learned about the issue.
>

OK, so I finally tried my experiment.  I have some bad news.  IR doesn't 
work on 24xxx devices.  Here's what I did:

I built the lirc 0.8.0 module sources out of the Debian package (yes the 
Debian build of lirc-modules-source still sucks but I'm persistent and got 
that crappy thing to build).  Then I installed the resulting package and 
successfully modprobe'd lirc_i2c into the kernel.  So far so good.

Next I grabbed my model 29032 PVR USB2 device and hotplugged it into the 
system.  As expected, lirc_i2c attached to it and I saw the messages in 
the system log to that effect:

Jun 30 21:41:02 londo kernel: [4557364.084000] lirc_i2c: chip found @ 0x18 (Hauppauge IR)
Jun 30 21:41:02 londo kernel: [4557364.084000] lirc_dev: lirc_register_plugin: sample_rate: 10

Then I did 'cat /sys/class/pvrusb2/sn-*/debuginfo' and got a list of 
attached i2c modules.  In that list I saw this:

Hauppauge IR @ 0x18 [v4l2_standard v4l2_bcsh v4l2_volume v4l2_freq v4l2_size v4l2_log]

That's what I would expect to see.  (The format is the driver's name @ I2C 
address [list of the types of traffic that the pvrusb2 driver is 
configured to send to it].)  I didn't actually try reading IR codes with 
this, but I got far enough to be convinced that at the kernel level 
everything is probably fine.  So, having done all that, I next unplugged 
my 29032 device and substituted my 24012 device.  _NOTHING_ else was 
changed.

And lirc_i2c failed to attach to it.

I checked the debuginfo output again and sure enough there was nothing in 
the list this time to suggest an IR driver present.  If that module 
doesn't attach, then there's simply no way IR is going to work on model 
24xxx devices.

Since the 24xxx devices still come packaged with a remote control I think 
it's safe to say that there is still an IR receiver present.  So something 
there has changed.  Hauppauge must have switched to a different chip or 
perhaps moved its I2C address or done some other kind of strange thing 
that is interfering with lirc-i2c's ability to detect it.

Digging further...

I restarted the pvrusb2 driver with i2c bus scanning turned on (options 
i2c_scan=1).  Here's what I got on the 29032 device:

Jun 30 22:11:01 londo kernel: [4559164.087000] pvrusb2_a: i2c scan beginning
Jun 30 22:11:01 londo kernel: [4559164.132000] pvrusb2_a: i2c scan: found device @ 0x18
Jun 30 22:11:01 londo kernel: [4559164.170000] pvrusb2_a: i2c scan: found device @ 0x21
Jun 30 22:11:01 londo kernel: [4559164.219000] pvrusb2_a: i2c scan: found device @ 0x40
Jun 30 22:11:01 londo kernel: [4559164.253000] pvrusb2_a: i2c scan: found device @ 0x43
Jun 30 22:11:01 londo kernel: [4559164.292000] pvrusb2_a: i2c scan: found device @ 0x50
Jun 30 22:11:02 londo kernel: [4559164.334000] pvrusb2_a: i2c scan: found device @ 0x61
Jun 30 22:11:02 londo kernel: [4559164.349000] pvrusb2_a: i2c scan done.

Those devices correspond to:

0x18: IR receiver
0x21: saa7115
0x40: msp3400
0x43: tda9887
0x50: eeprom (8 bit address)
0x61: tuner

Compare this to my 24012 device:

Jun 30 22:09:35 londo kernel: [4559077.947000] pvrusb2_a: i2c scan beginning
Jun 30 22:09:35 londo kernel: [4559077.952000] pvrusb2_a: i2c scan: found device @ 0x1b
Jun 30 22:09:35 londo kernel: [4559077.969000] pvrusb2_a: i2c scan: found device @ 0x43
Jun 30 22:09:35 londo kernel: [4559077.969000] pvrusb2_a: i2c scan: found device @ 0x44
Jun 30 22:09:35 londo kernel: [4559077.981000] pvrusb2_a: i2c scan: found device @ 0x51
Jun 30 22:09:35 londo kernel: [4559077.994000] pvrusb2_a: i2c scan: found device @ 0x61
Jun 30 22:09:35 londo kernel: [4559077.999000] pvrusb2_a: i2c scan done.

And those devices correspond to:

0x1b: wm8775
0x43: tda9887
0x44: cx25840
0x51: eeprom (16 bit address)
0x61: tuner

Look ma, no IR receiver.  Uh-oh...

So where is it?  Remember that cx25840 combines the previous functions of 
msp3400 and saa7115.  I wonder if it might also have IR capabilities.  So 
I looked at the cx25840 datasheet - and there it was.  It has IR signals 
in its pinout.  It's probably safe to assume that the cx25840 module also 
takes on the role of IR receiver as well.  That means that the job of IR 
reception must fall to the cx25840 module and as far as I see so far, 
nothing like that is implemented there.  (And even if it were it would 
have to be in some kind of lirc-friendly way if everything else were to 
stay the same.)

So the short summary I guess is that we're out of luck with IR on 24xxx 
devices.  :-(

I will update the web documentation to reflect this finding (probably 
still a few days away).  Sorry about this...

If someone would like to shoot a hole in this chain of reasoning, please 
feel free.

   -Mike


-- 
                         |         Mike Isely          |     PGP fingerprint
      Spammers Die!!     |                             | 03 54 43 4D 75 E5 CC 92
                         |   isely @ pobox (dot) com   | 71 16 01 E2 B5 F5 C1 E8
                         |                             |


More information about the pvrusb2 mailing list