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