I'm working on a device that will function as a digital
camera and harddisk unit at the same time on firewire
using the SBP-2 protocol under Win2000/XP. As a single
camera or single harddisk logical unit it works fine. As
two units, XP SP1 finds both and installs them in the
device manager. But it takes long time to install and
using them both creates problems.

This happens because of the way Windows work as stated
in "SBP-2 Support and Windows" document (dec. 4, 2001)
under "Session Management":

2. An ORB_POINTER write only occurs just after login,
because the operating system uses the DOORBELL register
all other times.

The targets Command ORB Fetch Agent only has one ORB
Pointer register per agent, so it is overwritten by the
last login/logout to LUN 1 (camera), and the next
DOORBELL to LUN 0 (harddisk) will use the wrong ORB
Pointer from LUN 1. The ORB_POINTER register in my device
is read-only and controlled by hardware.

Solution:
Host write to the ORB_POINTER register in the target,
whenever it changes focus from one LUN to another. Is
this possible (the agent has to be in reset or suspended
state), or is there a workaround?

Thanks,
Sune Jorgensen, MS EE
Firmware developer
Imacon AS
sjorgensen@imacon.dk
http://www.imacon.dk

Re: ORB_ POINTER problem with Multiple LUN under Firewire by Sune

Sune
Fri Aug 15 02:13:28 CDT 2003

This is exactly what I have done, why else would XP
install two devices in the Device Manager.

The SBP-2 protocol only deals with ORBs and has nothing
to do with Windows I/O Request Blocks (it also has to
work on MAC computers).

The ORB_POINTER is essential to both the Management Fetch
Agent and the Command Fetch Agent, independent of the
device class.

Thanks,
Sune Jorgensen, MS EE
Firmware developer
Imacon AS
sjorgensen@imacon.dk
http://www.imacon.dk


>-----Original Message-----
>Create 2 unit directories on your device - one for
camera, another for the
>SBP-2 disk. This must work, since the cameras have
nothing to do with ORBs
>(only with IRBs).
>
>--
>Maxim Shatskih, Windows DDK MVP
>StorageCraft Corporation
>maxim@storagecraft.com
>http://www.storagecraft.com
>
>
>.
>

More information by Sune

Sune
Fri Aug 15 08:14:05 CDT 2003

Max OS X always writes to the ORB_POINTER register before
a command ORB, and never uses the DOORBELL. But it
doesn't handle multiple LUN correctly, since it starts
with a Login to LUN 1 and then makes a TUR to LUN 0.

In Linux SBP2.C it only mentions support of multiple LUN
in the future.

I guess that a firewire harddisk with multiple LUN (all
of the same class) may work in Win2000 SP3+ and XP SP1+,
since the Service Pack has a fix for this problem, and
more work has to be done with SBP2PORT.SYS to support
multiple LUN of different classes?

Thanks,
Sune Jorgensen, MS EE
Firmware developer
Imacon AS
sjorgensen@imacon.dk
http://www.imacon.dk