[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