WWDC2003 Session 504
Transcript
Kind: captions
Language: en
today we're going to talk all about
firewire 800 hardware and software and
our new product and we also have some
interesting new tools to help you
develop four or five our 800 this
session will review how Apple has
deployed firewire 800 and our products
how you can use this in your own
products in your hardware and in your
software will briefly look at the impact
of firewire 800 on existing products and
that won't take long here's the specific
agenda for the slide first we'll
introduce firewire 800 just what is it
what are the benefits how does it work
Mike will come up and talk about the
hardware in great detail I will talk
about software together we'll show you
how you can deploy this new high-speed
technology in your product then we'll
briefly go over some developer resources
and we have some new tools to introduce
to you that should help in developing
for firewire 800 so let's get started
what is it I'm sure you've all figured
out it's twice as fast as firewire 400
but there's more to it than that
firewire 800 has a new connector if you
have one of our new products you've
probably seen it on the back it's this
rectangular connector why did we change
this the firewire 400 connectors the six
pin socket and all the cables just can't
carry higher speed signaled 800 might
have worked but 1632 hundred were
definitely out so it was time for a
higher grade signal path the firewire
800 connector has more pins making this
possible but it remains fully backwards
compatible with firewire 400 with the
right table you can connect all your old
firewire 400 devices to this port the
clock speeds exactly double as far as
the bitrate firewire 400 but there's
many improvements may arbitration so the
actual performance you can get maybe
more than double what you had at
firewire 400 speeds and of course you
get greater distances the specification
allows up to 100 meters rather than 4.5
and there's a variety of media that you
can use to accomplish this Michael go
into much more detail about that our
products with firewire 800 the new g5
tower that was entered
done monday the 17 inch powerbook g4 and
the xserve all have built-in firewire
800 ports in fact the xserve has two of
them all these products also have
firewire 400 ports it's on the same
firewire bus so you can still plug in
your ipod your camcorder you don't have
to go find a new cable just to keep
using the same device okay now I'd like
to welcome Michael teener he's going to
tell us in detail how all this new stuff
and fire re tendered really works please
welcome Mike hi so I'll be talking a
little bit about what fire or 800 is and
the first thing you should do when you
talk about something new is you should
talk about what hasn't changed so from
the point of view of pretty much the
whole stack from the hardware the
software we have the same old connection
model and the difference is now instead
of just having trees and daisy chains
and things like that now we tolerate
loops so you can literally connect
anything to anything and it will still
work we also support the same old
peer-to-peer operation it's not like USB
you don't need to CPU you can turn off
your Mac and everything will still
connecting talk to each other has the
same kind of user friendliness perhaps a
little bit better because we do tolerate
the loops and all the higher level stuff
the transaction models and higher level
software all pretty much the same and
finally the same kind of thing the
asynchronous an isochronous transit
modes they're all the same we're just
faster so basically everything above the
link layer is the same so all existing
software should work unchanged as long
as you're going to operate at the lower
speeds at the higher speeds of course
you have to know about higher speeds so
what is firewire 800 a more technical
thing that's really apples name for i
triple e 39 t 4 b.s 800 bilingual 1394
has these code terms which are basically
marketing numbers so when we say s100
really mean 98.3 or four megabits a
second but that's too hard to say so we
stay 100 and s 800 is exactly eight
times faster than that we have an
additional
beta mode of operation and I'll talk
about a little bit that you guys may
want to take advantage of and from now
on 1304 a operation is going to be
called legacy mode 13 for B thighs which
are the silicon that actually connect to
the ports on the back of the computer or
your peripheral device have three
different types supports there's legacy
ports which when you say a firewire 400
port that's the legacy port for
connecting to there are beta ports which
operate only in the new mode and then
are bilingual ports which operate either
one when apple says fire are 800 we're
talking about a bilingual port one that
can talk to either legacy peripherals or
the new beta mode peripherals the beta
mode is where we get our higher speeds
we get a longer distance and a little
bit i'll talk about the higher
efficiency and a better user experience
as well so let's talk about higher
speeds we specify in 39 4 b.s 800 + f
1600 data transmission rates it's all
been carefully analyzed and we /
future-proof it with an architecture and
media that support up to 3,200 and as a
matter of fact in the labs we've shown
that the existing fire r800 table that
you buy off the shelf right now has been
validated all the way to 3.2 give it a
second so we're set for whatever we can
do in the future I use the same old
shielded twisted pair that crosses over
in the middle Electrical spec still uses
the same the difference is now it's
what's called continuous dual simplex
which means two wires the two pairs are
continuously transmitting like this an
old legacy 3094 we would arbitrate for
the bus and then both wires of used to
transmit the data one would carry clock
and one would carry data now we're
concurring encoded clock and data at the
same time both directions as I said
we're transmitting continuously in both
directions one thing that is new is
because we're maintained in this
connection is the transmission speed
once we negotiate the
never changes so for running at eight
hundred megabits between the two ports
we continue to run at eight hundred
megabits between the two ports any
legacy packets that are running slower
than that are basically bytes stuffed to
make them come out right it's actually
simpler and much more efficient than
existing 3094 so if you have a device
that only runs at 800 megabits a second
you'll probably save us yourself a lot
of trouble by going pure beta mode so
how do we get to all the speed we have a
new signal encoding it's based on 10-bit
symbol which carry both the clock and
the data every byte of data is used uses
a 10-bit symbol the data and arbitration
states use the same IBM ate meat NB
encoding system that fiber channel and
the copper forms of Gigabit Ethernet use
a little bit different because we
scramble the data before we send it to
the encoder what that means is that
instead of packets typically have a lot
of repeating data and if you send a lot
of repeating data out on a wire even if
it's encoded you'll end up with peaks in
your spectrum which means it'll radiate
you don't want that so what we do is we
scramble the data first then we send it
the encoder the result is it looks kind
of like stealth it looks like noise that
we're sending out there so it smooths
out the spectrum it's a lot easier to
meet the FCC requirements we also have
some control symbols those are left
start in the end of the packet and
unlike Ethernet and fibre channel we use
a unique set of codes those codes are
like they'd be 10 B they're all DC
balanced but they have what's called a
handing distance of two from each other
and from all data symbols Hamming
distance of two means that it takes two
bit changes within that 10-bit symbol
before we can ever confuse it with
anything else so it's a very robust
encoding scheme those are also scrambled
as well so if you have a bunch of
packets they're all the same size we
don't get a little spectrum speak from
the start and the end of the package we
also have a very much shorter start and
end packet time 30 nights legacy 13-4
has a
the same time used to start a packet in
the end a packet no matter how fast the
packet is so we start wasting bit at
s800 it gets pretty significant in the
case of fire r800 we have just two
symbols and that scales with speed so we
get the we don't lose any time just
because we're running faster how we have
that same 8b 10 B encoding scheme for
all media and that media that's the same
scheme we use for optical media so use
the benefit of that by that TI fi that's
currently shipping can be used to drive
optical media twisted pair media as well
as the standard shielded media that we
use another way we get a higher
efficiency level is we have a brand new
arbitration scheme we needed to do this
because legacy 1394 alternates between
arbitrating for the bus and then sending
the data that means that the arbitration
is going to depend on the round-trip
delay time if you have a really big 3094
network and say you ran it across the
room here i'd have to send my request
over to the route which could be
anywhere and i'd have to get my grant
and grant would have to come back and
then I could send my data well that's
not too bad as long as it's fairly slow
and your networks like this but once you
get to really long networks or you get
to really high speeds that's wasted bits
going back and forth and we don't want
to waste unibit 3904 be uses an
overlapped arbitration scheme and the
scheme is known as a boss the boss
stands for bus owner supervisor selector
of course we came up with boss first and
then came up with what the acronym man
they also notice it's a 4-letter acronym
that's because we're not in telling
telling uses three-letter acronyms we're
one letter better boss is the currently
transmitting note that's important state
we don't have the concept of a route
except for some specialized functions
and error recovery in beta mode the
important thing is whoever's
transmitting owns the bus kind of nice
concept and we use that node to decide
who transmits next we have an explicit
decision at the end of each sub action
the sub action is you know you're
sending out a read and then there's a
little act coming back and that active
ending the subjects in that immediate
decision that we make saves arbitration
time now let me show you what that means
here's a typical little system this is
kind of a prototypical 13 and 14 network
node number 0 is the boss it's
transmitting data so this is the model
what you be saying I'm house sending
some data it could be an isochronous
sending a video stream 3094 be says that
this guy sending he's the boss so what
will happen is requests are going to go
in the opposite direction of the data
remember now we're continuous half
duplex so we're sending data all the
time like this so when we're sending
data away from the boss the reverse
direction is available to it so that's
what we'll start doing arbitration so
we're going to start sending the request
backup in the opposite direction while
the data is being transmitted so in this
example node number two makes a request
no number one makes a request to but
it's lower priority ah we get high
priorities too we only use them for very
special purposes but we do have priority
that request gets forwarded all the way
to the boss now the boss basically knows
what kind of requests are coming while
it's transmitting data when it's that
the boss finishes sending data it'll
send a grant right on the end of the
data so that grant propagates down until
it reaches a node that mate has a higher
priority crest at node number three we
had a high priority request and low
prayer request so the one receiving the
low prayer request just gets it into
packet it doesn't get the grant the
grant is always percolated back to the
node that has the highest prayer request
at any particular node so it only ends
up in one place so result of this is
gaps or Luke we don't have this send the
data arbitrate for the bus
win the bus send the data we can
literally start sending the data
immediately after getting the end a
packet that end the packet sequence
includes an optional grant symbol in
fact the real way to think about it is
there's two types of Enda packet one of
them doesn't give a grant and one of
them does and each mode repeating that
into packet sends the grant to the
highest priority request that it's
getting there's only going to be one
direction for the grant a similar
process removes the need for what's
called the arbitration reset gaps we
don't have that gap either result is
it's a much more efficient bus the other
thing we do is we get rid of loops
sometimes it's called loop healing but
that's an unfortunate turn because we're
actually trying to break loops but
sometimes i use that term so forgive me
i really mean Luke breaking what we do
during this loop free bill is we break
all loops that can be removed by
disabling a beta mode connection a beta
mode connection members of Phi over 800
firewire 800 connection so any loop so
you could have a loop of all legacy
connections with 150 or 800 in the path
and we'll break it will make sure that
it works we will prune any branch
containing a loop that cannot be healed
so if you have something that's sitting
out here it's real complicated thing and
somehow somebody built a loop out of
legacy 1394 will just take that
branching and and disconnect it and the
rest of the network will work we will
not interfere with the operation of
legacy of 5 they're out there things
work they don't even know what's
happening we don't require any software
intervention although software will know
what's happening so some of the stuff
that Eric can tell you about will be
able to tell you that kind of thing we
have weary enabled connections whenever
something has to be done so for instance
say we created that loop and we broke at
one beta connection and then somebody
broke the connection somewhere else we
would re in able the one was broken so
that we keep the loop alive I mean a
network alive it's kind of neat you can
actually build your if you want to build
yourself a highly redundant system you
can just interconnect
all the nodes and everything will work
and if any one cable gets tripped over
pulled out everything will reconfigure
it will still work you haven't seen some
of our labs or you'd appreciate that
joke we don't interfere with the ability
of sauce or determine the network
topology as a matter of fact unless
you're really smart you can't even it'll
look like somebody's out there
unplugging and plugging cables real fast
so that's the way it looks to most
software one thing to note it is not
deterministic so I can't tell you ahead
of time where Luke is going to be broken
depends on some randomizing algorithms
so we can't tell you that then there's
no way to control it there we go do my
blast anybody with the leader one of the
things we need to do is you want to make
sure we have the backwards compatibility
built in and 13 for be of course
supports that remember I said a port on
a Phi can either be a legacy 5 which
stands for DES port a beta mode only
port or bilingual port and we have some
connector keen to make sure people don't
do anything silly around here a fly can
have any mix supports operating in the
DF mode in the beta mode and it can
change dynamically a Phi can have a B
link which is what we use to get
firewire 800 or a legacy link or no link
at all so you can still build hubs which
is basically a Phi floating all by
itself so here's what we got this is a
typical hybrid bus it's got these DF
nodes of the legacy notes d F stands for
data strobe I'm not making a bad joke
here okay and there be nodes sitting out
here which are our new style nodes the
first thing that happens after the bus
gets up and running is you end up with
all the V nodes clustering themselves
into things called be clouds this is
kind of important because within those
be clouds the devices within those
clouds will try to operate into best
speed they can they'll use the beta mode
connections to talk to each other which
are the site of a optimized boss
arbitration and all that kind of cool
stuff
the nodes that are on the edge of those
clouds that talk to the data strobe are
called border notes and that's where all
the magic takes place that translates
between the two modes so what do we get
out of the hybrid operation there are no
restrictions on mixing legacy nodes and
34b nodes beyond the fact that if you
divide up to be clouds with a legacy
cloud you're not going to get as much
performance because you got a 400
megabit path between two 800 negative
space sorry so the best you're going to
do is 400 between any of those two the
key was at least it'll work the traffic
within the beak low cloud can exploit
all the benefits including loop breaking
and all that kind of cool stuff the data
strobe traffic operates as normal with a
rather complicated set of gaps that need
to be managed they can all be done as
well we have a better connector the new
connector as Eric said is was needed for
higher data rate it was actually if you
look at the connector it's actually
slightly smaller than the existing 6-pin
connector so it's also shallower so it
makes it a little bit easier to build
your designs it has keen to make sure
there's compatibility so you can build a
beta only node and you can't plug in a
cable a like a adapter cable to it and
there's two variants there's the
bilingual connector in the beta
connector and two forms of plugs a
bilingual a beta only plug in a
bilingual plug and they look like this
there's really going to be three cable
assemblies as far as applicants earn oh
really oh it should be too but you know
we're stuck there's a the one that goes
between the bilingual connector if I
were a hundred port and the 4-pin
connector on a camcorder there's the one
between the bilingual plug and the Sixth
Circuit connector used in everything
we've done right I shouldn't say it too
much it might be somebody from Sony here
and the beta mode connectors used for
all other connections anytime you want
to run the higher speed so what do we
get we also get this longer distance and
the goal was to get 100 meter that
big enough even from my house just
kidding this was input from the visa
home network committee which must have
gotten his input from bill gate
unfortunately the longer distance needed
the new nude needs new media we can't
run the nice little shielded twisted
pair 400 meters doesn't work so we
support category 5 wiring standard
Ethernet wiring that can run at x 100
currently we're working on a
specification so we can handle that up
to s 800 optical fiber for 200 megabits
a second in Japan they have a form of it
to runs at 400 megabits a second and
also multimode glass fiber for up to
three point two gigabit second so here's
a little media summary thing that you
can check out at your leisure basically
it's got all the cool stuff now i'm
going to talk real briefly about
something called a firewire design guide
the firewire design guide is something
that will that kind of started out as an
internal project but we're carrying
outside to the rest of the world
basically and what it is is a single
reference source for all designers of
fire web based systems not just
computers but everything it's got
guidance to get you all the way through
all those 13 amp or standards because
firewire stuff is more than just I
typically 3094 there's a gazillion
things that you have to know to do it
and it's a compilation of experience of
Apple engineers along with a lot of
other people a lot of application notes
from various vendors and presentations
of what not from a 3094 developer
conferences the whole thing is going to
be web linked where possible and it's
actually going to be presented as a
website which will be updated whenever I
get around to it hopefully clearly
quickly the document itself will be
available the first version of it will
be published at the trade associations
meeting in Oxford this July these are
now going to be what our recommendations
are the real brief summary of what's in
there
we recommend using the six or the nine
pin connector if at all possible the
4-pin connector is not really desirable
for various reasons it's not
particularly rugged people don't like it
because you can never figure out how to
plug it in and besides which you can't
carry power on the super team the socket
has to reverse backwards insertions that
means you can't plug it in backwards
with anything more than about 220
Newton's or something like that this is
something that we have run across this
is one of the reasons I want to buy the
cheapest possible cables because
cheapest possible cables the mechanical
tolerances are not wonderful and result
is it is possible plug some of those
suckers in with some force backwards and
bad things happen one of the things to
help people not do that is we are
encouraging everybody to have a plug /
mold that's the part of the connector
that's the plastic part you grip that
has keying on it that's taxable where
you put your thumb is supposed to be
flat where your fingers curl around is
supposed to be curved in the case of the
nine pin connector it's actually part of
the 30 on for beef specification if you
ever see a cable that doesn't have an
ISIL around on the side for you to do
that it's a non-compliant cable not
doesn't meet the standard in the case of
the legacy search and further we missed
that but this is the recommendation
that's included the connect your
orientation is the other half of that
which is people now know how to hold the
cable we I need to make sure that the
natural state of the plug is such that
people will tend to do the right thing
that means the thumb is on the top so
when you plug it into something don't
make people do this because they'll do
this and then you have a problem so make
sure that you do this now the world is
right-handed I'm sorry that means that
the thumb from my point of view here we
go from your point of view is going to
be on your left okay we tried both ways
you know we you know we checked out
people which one they want to do and
most people want to do it this way with
their thumb on the left so that's the
orientation it is particularly true when
you try to plug in blind on something on
the back side go like this try to you
know
when you go around and go like this it's
kind of awkward so people tend to do
this so when you look at it you end up
doing the same things like they're the
kinect replacement now we're getting a
physical design you have to tie these
things as close together as possible the
electrical constraints of especially a
firewire 800 are really difficult the
rise time of the signal is only half a
nanosecond that's a 1 gigahertz signal
it turns out even fire were 400 had that
and people built very fast flies and the
result was the right time was very quick
if you want to have both front and back
panel connectors it is best to use two
fives you don't have to if you're real
real careful and you have a big budget
like Apple it's possible to design the
system so that you can have a connector
far away from the thigh but I warn you
it's hard save yourself a lot of design
effort put us another five out there a
Phi is cheaper than a design effort
unless you build a couple million of
them excerpts do this by the way if use
Phi ICS make sure use up-to-date parts
the technology is moving around real
fast and even on legacy Phi's the
newfies that have just come out of the
last year so aren't much lower power so
you should consider using them power yes
you should use power you should be real
familiar with the 34 trade association
specifications for this they're
available the major system controllers
basically CPUs in television sets some
people say set-top boxes but you know
should be power producers it's really
embarrassing have your ipod and go up
your digital television set and the
battery drains so who it's important
allmax or power producers at least 7
watts at least 7 11 can't count on it
all peripheral device using 5 watts are
less should be bus-powered consumers
hate wall wart don't make them use them
they hate them unless you're plugging
into a Windows PC that's right be aware
of the voltage and power limits it could
be 33 volts out there on the cable be
aware of that
max use anything from a low of about
nine volts that's right to a high of
about 28 volts so if you're going to
plug into a max you have to tolerate
that kind of arrange the power providers
have to limit the current out rush
because G there could be short out there
and you know people don't like flaming
cables or smoking systems so you can use
that with various ways prefer a
resettable few there's some brand new
semiconductor devices that are very fast
current limits and they don't cost too
much and you should consider them as
well let's see isolation only needed for
exceptional environments that all you
guys are exceptional some 80 no but
really it's needed for a long cable so
if you're building anything that's a
network or performance system or
something like that you should consider
isolation if you're going to use
isolation use 39 for be beta mode for
that you can do it doing the legacy
through 294 but it's a pain once again
it's one of those really awful design
efforts that you'd save yourself a lot
of time just use use the file you can
buy off the shelf and bill debated
connection shielding this is complicated
because there's two types of shield in
their system there's the outer shield
that's the the one you use to protect
yourself from the various radiation mode
that should be AC isolated from the
ground on the fisa the power ground the
Phi ground inside the system should be
AC isolated that's because you've got a
lot of noise in the outside world you
want that slipping into your system on
the outside similarly you don't want the
digital ground and all that masking on
that gigawatts of power in there getting
out onto your shield so those should be
isolated this is a pain in the butt for
the 4-pin connector one of the primary
reasons apple hates it because the
shielding is awful it's very hard to do
the cable shield on the other hand
should be DC connected to that same pair
the reason we want to be DC connected is
this is the backup connection foreground
in case you have a dirty connector you
know the ground pin is wrong or
something or you're using one
connectors that has been do it right you
want to make sure you get a good ground
connection if you don't you can hear see
power going out and the only return path
for that power coming back is on the
twisted pair the data payer and you blow
up your fight it's bad don't do that so
make sure you do that it typically only
one place in the system at the power
supply or in a portable system like an
iPod there's something called a virtual
ground where you connect everything
together this can be done through a fair
right if you don't want noise getting
out and that's typically what we do um
what about protection from all that
shocks and whatnot you have to protect
that unfortunately can't give you a
general general guideline because it's
very fly dependent fortunately all the
five vendors give very good app notes
and what the right thing to do is what
about filters there's very smooth the
filtering is the best thing we can
suggest you is if you can don't use
really good design practices and don't
put external components through there
they mess up the system the signal
quality of the system if you have to
there's various ways you can do that
it's talked about here and some of the
application we'll talk later layout
rules for the data lines these are the
you know 800 megabit of second-line no
90-degree corners this is going to drive
all the way out guys nuts no 9 degree
toners no v is on the twisted pair this
will really drive you guys nuts equal
distances for the signals 84 in a pair
keep the pair is the same minimize the
distance pinning the connector in the
Phi put determination as near as the Phi
as possible one of the things can happen
when I publish I'll give you an example
layout of how to do all this the way I
say and then you can adapt it to your
purposes higher layers will have to wait
for a later edition sorry testing
Prashant I've you already talked about
this okay so anyway the trade
association does compliance testing we
highly encourage you to go through that
procedure if you came here it was free
oh well if you want that real firewire
marques can say firewire 3094 compliant
you have to go through this procedure
now here's a set of references that you
can get in your final thing I
particularly recommend this first one
which is emi board design and layout
considerations from TI and the final one
which is the gear how to build with the
fire 322 323 even if you don't use those
particular parts they're really really
well written there will be a firewire
800 version of the TI design guide which
will be really neat when it's finally
finished time we're doing it now so at
this point I'd like to pass it over Eric
who will tell you the two slides that
are necessary to do fire were 800 okay
thanks Mike chuckling as I said this
won't take long because pretty much
everything in firewire 800 is in the
hardware we support firewire 800 on
these products that have the ports in
Mac OS 10 version 10 24 and later these
are the same products i showed earlier
all of our products that have firewire
800 so if you make a firewire 800
product your customers don't need to
download any new drivers from us it's
already in there in the max that they
bought now let's look inside a Mac Mike
talked about the capability to have
multiple speeds on a single Phi and we
do that in our current products like the
new g5 tower it's really important to
understand how that works because it's
fairly easy to get it wrong in the mac
at the very bottom of the software or
below the software stack there's two
pieces of silicon that make up the
firewire interface the link is the layer
that does DMA knows what packets are the
Phi is the layer that actually drives
signals on the bus and with firewire 800
defy can have different ports with
different capabilities the figure here
shows 15 it has to port each connected
to 9 pin connectors for firewire 800 and
one quart that's connected to a 6-pin
connector for firewire 400 it is
essential that the Phi knows that it has
a 6-pin connector out there why is that
there's a cable that has a 9 pin
connector at one end and a 6
connector at the other end suppose we
connect that cable at the 9-pin end to a
firewire 800 device and at the sixth pin
ends we plug it into that 400 port up
there well the thighs at both ends of
their cable are firewire 800 five if
they don't know any better they'll try
to establish a firewire 800 connection
but they only have six pins to work with
so it's not going to work there's no
fallback it doesn't say this doesn't
look so good let's try four hundred it's
not going to fall back to a reliable 400
connection instead it's going to stick
with an unreliable 800 connection that
would be really bad now this problem is
really easy to avoid just read the
design notes for the phy each port on
the Phi has a pin that tells it what
kind of connector is on there all you
have to do is tie up the ground or tie
up too high if I will know what to do
but one developer already got this wrong
on one product we let them know and
they're fixing it so if you're going to
mix ports on your product please be sure
to do this right otherwise the customer
will have a bad experience ok here's the
software stack from act to attend
firewire there's much more detail about
this in the other session firewire in
depth let me briefly explain the layers
here and how they relate to firewire 800
down there at the bottom you see the two
parts from the previous slide the ohci
layer and the Phi when those are
detected I oki it loads the higher
layers into the kernel firewires all in
the kernel because it's a bootable
service we can take a page fault from a
firewire device at the bottom you see
the controller that's our device driver
for ohci in the middle you see the
family that's the sharing layer it lets
different applications devices drivers
all peacefully cooperate on one firewire
bus without stepping on each other's
toes above that we have protocols this
is where devices begin to differentiate
a device could be SBP to like an iPod or
a printer or camera it could be DV like
a camcorder or television or the set-top
box Mike mentioned we provide a variety
of common protocols there in the colonel
but we also provide what's called user
clients or officially device interfaces
so that you can access all of these
services from applications either by
writing an application or by writing a
plug-in that
execute in the context of an application
and if you do that the development and
especially debugging is a whole lot
easier so we've done everything we can
to facilitate you're doing that now what
about firewire 800 I didn't say anything
there hardly anything has changed
there's a new speed code to indicate the
800 speed the numbers three in case you
need to know there is new topology
analysis because there can be finds out
there with the mixture of speed
capabilities we have to go figure that
out in firewire 400 every five had one
speed it was either four hundred or 200
or 100 but some of our products have
this mix and some of yours might too so
firewire family knows how to figure that
out hardly anything else has changed the
SBP two-layer knows how to use speed
three but most drivers don't have to be
changed at all what might you have to do
if you're making hardware of course you
have to go get new silicon a new link
and a new five they can do firewire 800
like Mike described please use the
correct 9 pin socket today the only
silicon you can get support fully
bilingual operation so unless you have
some reason to lock that out use the
bilingual connector so your product can
be connected to as many other products
as possible and as I said configure the
ports correctly if you do have a 6-pin
or for some reason the 4-pin connector
on that side as far as software goes you
probably don't have to do anything Mac
os10 performs a speed analysis on the
bus figures out the fastest path between
your device and the mac and every other
device and will automatically send your
packets at the best speed that they can
make it to your device you might need to
know the speed for certain kinds of
devices such as an isochronous device
the i IDC or so-called dcam type of
camera for example has a register in it
where software tells it what speed it
should send video app if that's going to
be 800 software will need to know to put
a 3 in that register so that's one case
where you might need to know the speed
our macintosh systems with firewire 800
port support firework 800 in the bootrom
also known as open firmware these
products can all boot from firewire 800
hard drives they can boot through 400
hubs or other devices if you have an 800
hard drive at some remote location on
the bus and they all support target disk
mode at the firewire 800 to be as well
what else is new the other session went
into some detail about some of these
topics we support the internet protocol
on firewire now and we've made it a good
deal faster in mac OS 10.3 we support FB
p3 the fast start speed up which will
improve disk performance for some kinds
of i/o the other session has a great
deal of information about how
isochronous transfer work so please
check out those slides if you're
interested in that we've also improved
what you can do with details by adding
error standards and variable length
capabilities we've added a bunch of new
features for ABC especially allowing the
Mac to be a target we were really good
at telling other devices what to do the
camcorder should play the TV should go
to channel 12 now we can let them tell
us what to do there are certain
receivers or set-top boxes that may work
it may or may offer some great new
capabilities if you write software to
listen to them and let them tell the Mac
what they're doing now let's review some
of the resources that we have to help
you develop or firewire 800 we publish
software development kits these are
available for free download on the web
this is probably our biggest product as
a software team so please give us
feedback if these aren't meeting your
needs they have lots and lots of sample
codes especially for developing in
application space using the use of
clients there's documentation there's
tools there's pre-release components
sometimes if we have new versions of the
firewire software you can try them out
check out bug fixes before your
customers see them it's available on the
web at the location listed there apple
now has an offering called the firewire
reference platform this is completely
different it's a fully independent
software stack it's not related to Mac
OS
this is designed for embedded firewire
software or firmware development if
you're making a set-top box a TV some
multifunction device you can get a big
head start using the firewire reference
platform it has a code especially for
ABC command Fitz SBP to other protocols
you can save a lot of time by starting
here there's a whole session on this
topic tomorrow afternoon its track 508
we hold events for firewire developers
we hold plugfest as the Mike mentioned
there is a TA approved plugfest
happening right now we had 40 devices
submitted by dub dub defeat attendees
are being tested now and they can
receive the fire our compliance logo if
they pass this testing we hold these at
macworld and a dub dub DC we hope
developer kitchens where we bringing
firewire software engineers we get
together with developers for hands-on
debugging tutorial often we introduce a
new SDK a number of the engineers are
here today in the front row to have
questions after the session they'll be
happy to talk to you if you'd like to
attend one of these kitchens please
contact developer relations we simply
hold them on demand when you're ready
either in cupertino or in tokyo we've
had about 10 of these to date there a
lot of fun so please let us know if
you'd like to attend one we also
participate in the official 1394 ta
interoperability workshops these are a
bit more formal than what we do at our
own plug fists there's logo Mike
mentioned earlier there's three kinds of
testing at this event you get really
rigorous testing of your device we
always go because we learn a lot about
our own devices as well as about
developer devices these are open to
non-members they're really valuable and
highly recommend that you participate
the 1394 ta promotes 1394 it organizes
tradeshow events it also publishes all
of the ABC command set standards and a
number of other standards that you may
need to create drivers or devices on
fire wire now let's look at some fire
wire tools we have new tools to offer
for you this year that will help you to
develop for firewire 800 and to develop
for Mac OS 10
Mike talked bike and I both talked about
the Phi what exactly does this chip do
and there's a tool for it so this is why
I'm explaining it if I stands for
physical layer it's the bottom of the
interface the 5 chip drives differential
voltages on the cable to make ones and
zeros on the bus and then it receives
the same signal concerns and back into
packets that we can understand if you
have multiple ports defy acts as a
repeater defy also contains all of the
arbitration it's all done autonomously
without software drivers so it goes from
very fast this means a hub can
participate even though it doesn't have
a link layer or controller in comparison
the link is a higher level function that
knows how to form packets compute check
sums it knows what isochronous cycle
time is and the link is where the DMA is
located the 5 is not programmable but it
does have a small register file each
registers 8 bits wide here's the map is
shown from the 1394 a spec there's a lot
of interesting things in here like Mike
talked about let's go to 3094 beef I
concede added a few more bits if there
was a loop detected on the bus that had
to be broken there will be a bit step in
the corresponding side telling you where
this happened so we have a tool now that
will let you look at what's in the high
register you may not need to do this
this isn't something customers would do
but many interesting things that happen
on the bus may be explained by examining
the thigh registers to find out why it's
doing that particular interesting thing
this tool is called thigh tool it's a
real time by register viewer and editor
it has integrated documentation if you
find a bit in the file you don't
remember quite what it does just move
the mouse over that bit the
documentation will appear right from the
spec you can look at the phy in your own
mac to see what it's doing or you can
reach out across the firewire bus and
look at the Phi and another device if
it's 1394a or 1394 be and find out what
it's doing and this tool needs no
special Hardware it runs on all the
products that we sell today anything
with an open HDI interface so let's take
a demo of this let's move to the den
system
here's my tool what you can see in the
main portion of the display is the five
register map just like on the slide but
now the field our pop-up menus and
checkboxes that actually do things to
the five and you can see the integrated
documentation as I move the mouse over
the various field the documentation for
that field appears right down at the
bottom of the screen right now this
particular machine is an older g4 tower
that only has firewire 400 so you can
see some of the fields are reserved and
it's showing information from the spec
for the 1394a if you want to see the
1394 b-spec because some of these things
have changed you can just pick that and
now you've got a little new information
like the fact that this field no longer
has any meaning in 1394 be Phi tool
knows about all the registers in the
spec although it doesn't let you it
doesn't show anything for the rest of
them there are type in fields over here
so if you want to change a value in some
vendor unique register you can still do
that also if you don't like binary
number you can change that to something
a little more sensible on the left
column over here there's a real-time
summary of each of the ports on this Phi
is also a summary of what kind of five
this is we can see this Phi is made by
loosened it has three ports it's capable
of s102 s400 this is what the three
ports are doing right now none of them
is plugged into anything I'm going to
connect my ipod to one of the ports and
it immediately shows up on port one we
saw it flicker a little as the port was
negotiated port one the ipod is now
switching from mp3 mode into firewire
disk mode and it causes a couple bus
reset when that happens we saw the port
changed several times but now it has
settled down to an s400 connection
connect and bias or a summary of these
bits over here but these are showing 0
why is that the bottom eight registers
are paged there's a page select up
straight up they're both they're paged
for different groups of information and
is also a port select register to see
each port so if I asked to see port 1
now these registers correspond to port 1
and you can see connectives one bias as
one child is one and this be
is 400 it all agrees with what's over
here in the summary we can go right in
and make changes i can click them to
disabled this now that port is disabled
the ipod has been unplugged and now it's
back we can cause a bus reset that fit
itself clearing so the checkbox didn't
stay on which can also cause a better
short + reset down here so you can
change a lot of things in the fine you
can't break anything with this tool you
can't damage anything but you could get
the mac confused so if you're changing
things you don't really know what they
are you may want to power down and
unplug everything to get back to normal
operation now I'm going to unplug the
ipod and plug the cable into this other
mac that has 1394 be because the tower
here is an older system we've
established only a 400 connection but
now let me show you how we can view the
thigh in another device the top pop up
menu lets you pick which firewire
interface to use this mac has only one
built in so it's shown here this pop up
lets you choose which node you want to
look at and it knows how many nodes are
on the bus at any given time which one
is that other mac well we are node 0
that's what's in register 0 so the other
guy must be node 1 will pick node 1 all
these new registers have appeared
because node 1 is a 1394 be node and we
can see the general information that
fire was made by t.i it also has three
ports it's bilingual and it works up to
800 right now the port that I plugged
into on that Phi is port to it shows
that it's connected at us 400 and all
the new registers have appeared so if I
move this over to port 2 now we see the
details of that port on the other device
so you can learn a whole lot about
what's going on here's the loop disabled
bit down here that Mike's mentioned
earlier if this port was disabled in
order to break a loop you'd find a one
in here one thing you can't do though
you can't change remote PHY registers I
can click i can try to turn on disabled
on this port nothing happens
and down at the bottom it's explaining
to me that that's a non-local Phi 1394
doesn't provide any way to reach out and
change the other five that was
considered just a little too dangerous
all we can do is look and see what's
going on so this tool run on any
hardware just uses the open HCI
interface even if you don't have a five
problem to diagnose I think you'll find
it very interesting to try this out and
poke around and see what's happening on
your bus okay let's go back to the
slides we have another new tool to offer
you called firestarter this tool was
designed for use of plugfest the
commercial buff analyzers can draw a
picture of the buff but when you have
sixty three nodes on there which is what
we try to achieve at a plugfest they can
take an awful long time to do that by
the time they've got the nodes displayed
something's probably changed firestarter
can draw a simple but accurate rendering
of the bus topology and it can do it 10
times per second so you'll know exactly
what the bus is doing at any moment
firestarter also provides some summary
information about how many nodes are on
the bus what kind of nodes they are and
how long the bus has been stable here
you can see on the right hand side the
topology of a bus with six nodes and on
the left hand side various summary
information about the bus here's what it
looks like with 63 nodes this is from
one of our plugfest you can see we had
4650 bus resets until we got to 63 nodes
let the bus was unstable for more than a
minute before anything went wrong we
have another new tool called firewire
busy bus if you want to make something
go wrong this may be the tool for you
this tool can generate traffic on the
bus it can generate any asynchronous
packet can also generate bus recept even
generates us reset storms and it can
enable and disable the courts just like
I did inside tool automatically to
simulate hot plugging so you can leave
this tool running for extended periods
and see if your device survives there's
a rate adjuster you can make it ramped
up and down from total quiet to a very
intense testing and you can select all
the packet speeds all the packet types
like the other two this tool works on
open HCI now be careful this tool
generates random packet
the default configuration is fairly safe
but if you change the settings you can
generate random packets that right
random data into random addresses in the
max memory and we might crash if you do
that so be careful here's a full screen
shot of 5th w busy bus at the top you
can see the sliders for adjusting the
rate the center has all the checkboxes
for turning the individual tests on and
off the bottom has the very important
start button and displays of what the
test is doing and some summary
information about the bus and on the
Left we have the same information from
Phi tool the summary of your Phi and a
real-time status of all the ports on the
local Phi now there's one more tool that
you may need for developing firewire on
necklace 10 and that's Firebug and we're
finally pleased to provide Firebug on
Mac OS 10 it is a real-time packet
Snooper now this requires special
Hardware ohci doesn't have a smooth
function so just like I'm Mac OS 9 you
need special hardware but Firebug can
show you every packet on the bus in real
time it can decode the protocols like
SBP two and ABC so you can actually see
what's going on it even has bus
configuration services so that you can
set whose of the route change the gap
count and so on now same time we brought
up to 10 we made some improvements
Firebug can decode more ABC commands it
tells you more information about SBP
commands for example it can decode the
RBC command set common disk operations
like read/write synchronized cash SBP to
also survives a bus reset in almost
every case now whereas before it hardly
ever figured out what was going on after
a bus reset there's a fire edge astir
dump function you can see it in the
screenshot there it's like Phi tool so
you don't have to use to max at once you
can get the Phi registers dumped out in
text right and in Firebug vlog other new
features include node ID filtering so
you can view packets only going to
coming from or going between whatever
nodes you select you can get my chakra
in a summary if by default Firebug
doesn't show I talk in this package
because we're overwhelm the display
there's 8,000 of them protect
even if you have that suppress Firebug
will tell you that isochronous traffic
has started it'll tell you what channel
it's on what speed is going at what note
is coming from how big the packets are
it can even recognize DV and tell you
whether it's ntsc or pal format so that
may be very handy and keeping track of
what's happening on your bus and Firebug
running on Mac OS 10 supports dual
processors we use one processor to snoop
all the packets the other processor to
keep the display up to date purists may
scoff at this partitioning of work but
it works just fine for Firebug all of
those tools excuse of a slide missing
all of those tools are available today
in firewire SDK 17 it is live on the web
but it is an orphan link there's no page
you can go to the next to it they
updated the whole developer website on
Monday they're still filling in all the
details but you can get it today go find
firewire SDK 16 get that URL for the
download change the 6-2 or seven and
you're all set I tried it this morning
it's really there if you end within a
few days the page will actually know how
to find it here's where you can go to
get the firewire standards and
specifications the I Triple E for
firewire itself the trade association
for ABC command sets the I IBC camera
which the I sites by the way uses that
standard and the ISO if you want to know
the format for DV or other really
detailed stuff about DV camcorders many
of those standards come from the ISO no
here's the okay we've got the slides out
order here's the summary of all new
tools I showed they all require ohci
except Firebug which still needs PCI
links they all require Mac OS 10 version
10 to five or later every one of them
when they run will displace the existing
firewire software this is so the tool
won't interfere with mac OS 10 and vice
versa so this is just like firebug on 9
you really should have a dedicated
machine running the tool the tool will
refuse to launch if it would cause you
to unmount hard drives or anything else
that might be bad and please be careful
these tools touch the hardware directly
in order to do their thing this means
they could crash
machine we've done everything we can to
make them solid but their new I'm sure
one of you can find a way to crash the
machine so run this on a separate
machine or at least make backups don't
try to surf the web and do your email at
the same time this tool is running now
there's the slide explaining that
they're available today and you have to
change the link okay let's wrap up
here's all the sessions this week at dub
wc4 firewire firewire in depth was
yesterday fire our feedback form
together with USB feedback form as later
this afternoon tomorrow we have the
session on the reference platform that I
mentioned earlier and tomorrow during
the campus bash we have the firewire USB
and Bluetooth plug and unplug the fest
if you want to talk to Apple if you'd
like to come to a firewire kitchen or if
you need to know who to work with
prashant contrary will be up here in a
moment Guillermo Ortiz are both
available in developer relations we also
have mailing lists for firewire
developers these are fairly active you
can subscribe anyone can join at the URL
listed here developers can post
questions developers can answer each
other's questions which is great or we
will answer questions if we have to we
also announced information about new
tools new SDKs other announcements on
the mailing list there's one through
firewire in general and this one for the
firewire reference platform I was told
yesterday that some of these links may
be out of date possibly because they
revamp the ADC web page yesterday so
we'll post an update on the mailing list
later if these aren't quite right
there's a document called working with
firewire device interfaces this shows
how to use the user clients to access
firewire from user space which is if you
can where you want to be writing a
software this fireworks are SDK 17 as I
just described is available for free
public download on the web and it has
additional reference information in it