1394: second device of same type not detected

Hello,
I developing a WDM driver for a firewire device. I used the 1394Diag
example form the ddk as a starting point.
I’m having some trouble detecting more than one device of the same type
(a device with same vendor and device id). The second device is simply
not detected. I’m getting a bus reset if the cable is plugged, but thats
all. The add_device function is not called.
Each device itself is detect.
If I change the hardware vendor Id of one of the devices and the vendor
Id in the .inf file the driver is load as expected.
From other (PCI bus related) projects I know that a driver should be
loaded for every hw-instance.
Thanks
Uwe

> I developing a WDM driver for a firewire device. I used the 1394Diag

example form the ddk as a starting point.
I’m having some trouble detecting more than one device of the same type
(a device with same vendor and device id). The second device is simply
not detected. I’m getting a bus reset if the cable is plugged, but thats
all. The add_device function is not called.

I’m not completely sure what id’s you’re working with. The
configuration ROM of each device needs a UNIQUE 64 bit id made up of
vendor_id, chip_id_hi and chip_id_low.

Vendor id should be an
Organizationally Unique Identifier (OUI) purchased from IEEE. The
other 48 bits (less if you purchase IAB instead or OUI) are yours to
choose (split between device type id and device instance) however at
the end of the day, each device must have a unique number. (Although I
have never experimented with giving 2 devices the same id so I can’t
say what happens when you do this.)

Doing this I have never had any trouble getting multiple instances of
a device to show up at the same time.

Rob
xxxxx@telusplanet.net

Robert Newton wrote:

>I developing a WDM driver for a firewire device. I used the 1394Diag
>example form the ddk as a starting point.
>I’m having some trouble detecting more than one device of the same type
>(a device with same vendor and device id). The second device is simply
>not detected. I’m getting a bus reset if the cable is plugged, but thats
>all. The add_device function is not called.
>
>

I’m not completely sure what id’s you’re working with. The
configuration ROM of each device needs a UNIQUE 64 bit id made up of
vendor_id, chip_id_hi and chip_id_low.

Vendor id should be an
Organizationally Unique Identifier (OUI) purchased from IEEE. The
other 48 bits (less if you purchase IAB instead or OUI) are yours to
choose (split between device type id and device instance) however at
the end of the day, each device must have a unique number. (Although I
have never experimented with giving 2 devices the same id so I can’t
say what happens when you do this.)

Doing this I have never had any trouble getting multiple instances of
a device to show up at the same time.

Rob
xxxxx@telusplanet.net

Thank you for your clarification. It seems that the second device with
the same id is not detected and that is what should happen because the
ids must be unique.
But what about the .inf file of a driver. My .inf file looks like this:

[DeviceList]
%DEVSDESCRIPTION%=DriverInstall, 1394\a35&1

The “a35” is the OUI, but what about the “&1”. I thought that would be
the device type id somehow. You said the other 48 bit are split between
device type id and device instance. The other 48 bit are set to 0xea68
in my case (chip id high = 0). At the moment I don’t know where to find
the .inf-file equivalent of the device type in the config ROM .
Thanks
Uwe

Does anybody know if the same problem (unique device ID) exists for USB
devices too ?
I am working on a USB driver & I am not able to load 2 devices with the same
VID+PID+DID !

Best regards & happy new year,
PaoloC

----- Original Message -----
From: “uwe kirst”
To: “Windows System Software Devs Interest List”
Sent: Tuesday, January 06, 2004 5:59 PM
Subject: Re: [ntdev] 1394: second device of same type not detected

> Robert Newton wrote:
>
> >>I developing a WDM driver for a firewire device. I used the 1394Diag
> >>example form the ddk as a starting point.
> >>I’m having some trouble detecting more than one device of the same type
> >>(a device with same vendor and device id). The second device is simply
> >>not detected. I’m getting a bus reset if the cable is plugged, but thats
> >>all. The add_device function is not called.
> >>
> >>
> >
> >I’m not completely sure what id’s you’re working with. The
> >configuration ROM of each device needs a UNIQUE 64 bit id made up of
> >vendor_id, chip_id_hi and chip_id_low.
> >
> >Vendor id should be an
> >Organizationally Unique Identifier (OUI) purchased from IEEE. The
> >other 48 bits (less if you purchase IAB instead or OUI) are yours to
> >choose (split between device type id and device instance) however at
> >the end of the day, each device must have a unique number. (Although I
> >have never experimented with giving 2 devices the same id so I can’t
> >say what happens when you do this.)
> >
> >Doing this I have never had any trouble getting multiple instances of
> >a device to show up at the same time.
> >
> >Rob
> >xxxxx@telusplanet.net
> >
> >
> Thank you for your clarification. It seems that the second device with
> the same id is not detected and that is what should happen because the
> ids must be unique.
> But what about the .inf file of a driver. My .inf file looks like this:
> …
> [DeviceList]
> %DEVSDESCRIPTION%=DriverInstall, 1394\a35&1
> …
> The “a35” is the OUI, but what about the “&1”. I thought that would be
> the device type id somehow. You said the other 48 bit are split between
> device type id and device instance. The other 48 bit are set to 0xea68
> in my case (chip id high = 0). At the moment I don’t know where to find
> the .inf-file equivalent of the device type in the config ROM .
> Thanks
> Uwe
>
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@tin.it
> To unsubscribe send a blank email to xxxxx@lists.osr.com

Not sure what you mean by DID, but here is the general gist:

if your device has a serial number and 2 devices are plugged in with the
same serial number, the second will not be reported to the OS or the
machine will bugcheck (depends on the version of the USB stack). If
your device does not have a unique serial number, then for each port the
device is plugged into, it will be treated as a new device and there can
be as many of your device as there are ports.

d

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of PaoloC
Sent: Tuesday, January 06, 2004 7:13 AM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] 1394: second device of same type not detected

Does anybody know if the same problem (unique device ID) exists for USB
devices too ?
I am working on a USB driver & I am not able to load 2 devices with the
same
VID+PID+DID !

Best regards & happy new year,
PaoloC

----- Original Message -----
From: “uwe kirst”
To: “Windows System Software Devs Interest List”
Sent: Tuesday, January 06, 2004 5:59 PM
Subject: Re: [ntdev] 1394: second device of same type not detected

> Robert Newton wrote:
>
> >>I developing a WDM driver for a firewire device. I used the 1394Diag
> >>example form the ddk as a starting point.
> >>I’m having some trouble detecting more than one device of the same
type
> >>(a device with same vendor and device id). The second device is
simply
> >>not detected. I’m getting a bus reset if the cable is plugged, but
thats
> >>all. The add_device function is not called.
> >>
> >>
> >
> >I’m not completely sure what id’s you’re working with. The
> >configuration ROM of each device needs a UNIQUE 64 bit id made up of
> >vendor_id, chip_id_hi and chip_id_low.
> >
> >Vendor id should be an
> >Organizationally Unique Identifier (OUI) purchased from IEEE. The
> >other 48 bits (less if you purchase IAB instead or OUI) are yours to
> >choose (split between device type id and device instance) however at
> >the end of the day, each device must have a unique number. (Although
I
> >have never experimented with giving 2 devices the same id so I can’t
> >say what happens when you do this.)
> >
> >Doing this I have never had any trouble getting multiple instances of
> >a device to show up at the same time.
> >
> >Rob
> >xxxxx@telusplanet.net
> >
> >
> Thank you for your clarification. It seems that the second device with
> the same id is not detected and that is what should happen because the
> ids must be unique.
> But what about the .inf file of a driver. My .inf file looks like
this:
> …
> [DeviceList]
> %DEVSDESCRIPTION%=DriverInstall, 1394\a35&1
> …
> The “a35” is the OUI, but what about the “&1”. I thought that would be
> the device type id somehow. You said the other 48 bit are split
between
> device type id and device instance. The other 48 bit are set to
0xea68
> in my case (chip id high = 0). At the moment I don’t know where to
find
> the .inf-file equivalent of the device type in the config ROM .
> Thanks
> Uwe
>
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@tin.it
> To unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

> The “a35” is the OUI, but what about the “&1”. I thought that would be

the device type id somehow. You said the other 48 bit are split between
device type id and device instance. The other 48 bit are set to 0xea68
in my case (chip id high = 0). At the moment I don’t know where to find
the .inf-file equivalent of the device type in the config ROM .

The IDs in the INF file are typically setup in a couple of different ways.
For instance I have a 1394 camera called an IBot camera made by OrangeMicro.
I can setup the INF file manufacturer’s section to either look for the
vendor name/model name of the camera as so:

[MyMfg]
%MyDeviceDesc%=MyDDI, 1394\ORANGE_MICRO&IBOT

And/or I can have the manufacturer’s section look for the Unit Spec ID/Unit
SwVersion as so:

%MyDeviceDesc%=MyDDI, 1394\A02D&100

The vendor name (ORANGE MICRO) will be contained in a VendorLeaf in the
device’s configuration ROM (note that blanks in the vendor name are replaced
with underscores in the INF). The model name (IBOT) will be contained in a
ModelLeaf. The Unit Spec ID (A02D) and Unit SwVersion (100) are contained
in a UnitDirectory.

For more information on the content and layout of vendor leaves, model
leaves, and unit directories see the IEEE 1394 specification, and the IEEE
1212 CSR specifications.

Be aware that a single device can have muliple functions, thus multiple unit
directories, leaves and such.

For more information on 1394 identifiers in INF files see the topic
“Identifiers for 1394 Devices” in the help documentation for a late model
DDK.


Bill McKenzie
Compuware Corporation
Watch your IRPs/IRBs/URBs/SRBs/NDIS pkts with our free WDMSniffer tool:
http://frontline.compuware.com/nashua/patches/utility.htm

“uwe kirst” wrote in message news:xxxxx@ntdev…
> Robert Newton wrote:
>
> >>I developing a WDM driver for a firewire device. I used the 1394Diag
> >>example form the ddk as a starting point.
> >>I’m having some trouble detecting more than one device of the same type
> >>(a device with same vendor and device id). The second device is simply
> >>not detected. I’m getting a bus reset if the cable is plugged, but thats
> >>all. The add_device function is not called.
> >>
> >>
> >
> >I’m not completely sure what id’s you’re working with. The
> >configuration ROM of each device needs a UNIQUE 64 bit id made up of
> >vendor_id, chip_id_hi and chip_id_low.
> >
> >Vendor id should be an
> >Organizationally Unique Identifier (OUI) purchased from IEEE. The
> >other 48 bits (less if you purchase IAB instead or OUI) are yours to
> >choose (split between device type id and device instance) however at
> >the end of the day, each device must have a unique number. (Although I
> >have never experimented with giving 2 devices the same id so I can’t
> >say what happens when you do this.)
> >
> >Doing this I have never had any trouble getting multiple instances of
> >a device to show up at the same time.
> >
> >Rob
> >xxxxx@telusplanet.net
> >
> >
> Thank you for your clarification. It seems that the second device with
> the same id is not detected and that is what should happen because the
> ids must be unique.
> But what about the .inf file of a driver. My .inf file looks like this:
> …
> [DeviceList]
> %DEVSDESCRIPTION%=DriverInstall, 1394\a35&1
> …
> The “a35” is the OUI, but what about the “&1”. I thought that would be
> the device type id somehow. You said the other 48 bit are split between
> device type id and device instance. The other 48 bit are set to 0xea68
> in my case (chip id high = 0). At the moment I don’t know where to find
> the .inf-file equivalent of the device type in the config ROM .
> Thanks
> Uwe
>
>