[pvrusb2] getting at the serial number

Carsten Meier cm at trexity.de
Sat Jan 17 09:57:29 CST 2009


Am Fri, 16 Jan 2009 22:30:21 -0600 (CST)
schrieb Mike Isely <isely at isely.net>:

> 
> Carsten:
> 
> I just learned something interesting that you'll want to know.  The 
> serial number *is* in fact already available in the USB configuration 
> data.  Thus you can do what Mauro is suggesting to identify the
> device: Use the bus_info field to find the udev-populated device node
> in /sys and then walk that to find the serial number.
> 
> The reason I had never considered this is because the device's serial 
> number is stored in its ROM, encoded in a format that is specific to 
> Hauppauge and has nothing to do with USB.  The pvrusb2 driver reads
> this by using the tveeprom module to parse the data.  Since the
> pvrusb2 driver then never does anything with the result except to use
> it as the root node in its own sysfs interface, I had concluded that
> it wasn't available any other way.
> 
> However it is in fact present in the USB configuration data.  Just
> run the usbview generic tool and you'll see it.  You'll see a field
> labeled "Serial Number:" and its value will be of the form
> "mmmm-xx-yyyyyyyy". The "mmmm" appears to match the model type, but
> the "yyyyyyyy" is an 8 digit hex number that when converted to
> decimal will match the number that the pvrusb2 driver puts in its
> sysfs interface.  (The "xx" part appears to just be a pair of
> constant zeroes.)
> 
> Why is this?  Well I can't prove it, but I can think of two 
> possibilities for how the serial number could have found its way into 
> the USB configuration data without any help from the pvrusb2 driver:
> 
> First the USB config data is also in that ROM - this is where the 
> manufacturer and device ID are initially coded of course.  But that's
> a different part of the ROM, formatted in a manner that the FX2 
> processor's factory ROM initialization can directly read, i.e. this
> part is not specific to Hauppauge.  So it's possible that the serial
> number is actually written in two places.
> 
> A second possibility is that the FX2 is able to directly reinitialize 
> its USB interface as it comes up.  It can write its own configuration 
> data.  So it's theoretically possible that the Hauppauge-supplied FX2 
> firmware is itself accessing the nearby Hauppauge ROM, extracting the 
> serial number, and then stuffing it in to the USB configuration
> data. However until now I've never seen any actual evidence that the
> FX2 firmware will directly read that ROM (rather, the host driver
> reads it).
> 
> But either way that would explain things.
> 
>   -Mike
> 

Hi,

I'm now diving into sysfs and found the info you mentioned in
"/sys/bus/usb/devices/7-2/" for a bus_info-string of "usb 7-2 address 6"
The "address 6" part is found in "/sys/bus/usb/devices/7-2/devnum" and
is the part which causes the trouble with my simple bus_info-approach
because it always changes. Some questions about now two possible
approaches::

Approach #1: Direct mapping of card and bus_info to config data (my
original idea):

- To make the simple bus_info approach work, just the address 6 has to
be removed from the bus_info-string. Is it neccessary to identify the
device in sysfs? (should it really be there?)

Approach #2: Use bus_info-string to locate device-information in sysfs
and read infos like serial from there:

- How does the canonical usb-bus_info-string look like which has
been suggested by Mauro on the linux-media-list?
- How to make my app work with PCI-devices? (because I have to look
in "/sys/bus/usb/" for USB-devices) How to distingish USB- and
PCI-devices from v4l2?

Of course, both approaches could be combined if bus_info would return
something like "USB-7-2" which doesn't change and is suitable for
finding the serial via sysfs.

Sorry for all those questions. I know you are a
driver-developer, not my personal teacher, but you know about the
problem I have ;) I already read the sysfs-reference at
http://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/
but it doesn't contain much information for my case.

Regards,
Carsten


More information about the pvrusb2 mailing list