Canon HV20/30/40 IEEE 1394 connectivity issues with Windows

AVCHD Flash Memory models - HF G30, HF G20, XA20, XA25 (2013). HF G10, XA10, HF S30 (2011). HF M32, HF M31, HF M30, HF M300, HF S20, HF S21, HF S200 (2010). HF20, HF21, HF200, HF S10, HF S11, HF S100 (2009). HF10, HF100, HF11 (2008).
AVCHD Hard Disk models - HG20, HG21 (2008). HG10 (2007).
HDV models - HV20, HV30, HV40, XH A1.
kanone
Posts: 5
Joined: 27 Jun 2010 19:51
Location: Stouffville, Canada

Canon HV20/30/40 IEEE 1394 connectivity issues with Windows

Post by kanone »

There have been quite a number of posts on various video forums concerning intermittent XP connectivity issues with Canon Vixia High-definition video camcorders (HVC). I considered joining one of these to try to help clarify the situation, but most are by now very deep, and it takes the reader much time to create semantic context. So, I've created a new topic, and started it off with what I hope will be a canonical model and description of how XP deals with HDV, which is at the root of the problem, and give explicit instructions to guarantee that, when attached to a 1394 port, will be recognized by the operating system.

The description given is specific to Canon devices, but may assist owners of other brands too as the basic problem of XP recognizing an HDV is specific to Windows XP, not the device. European readers should note that television standards referred to are North American. Also please note that this article has also been posted on Videohelp.com.

Canon's HVC Vixia devices supply video and still image output through five ports:

1. An AV terminal: 3.5 mm. TIP jack for transmitting composite video to standard definition analogue devices;
2. An RGB terminal: proprietary jack for transmitting component video to high definition analogue devices;
3. A HDMI terminal: HDMI 1.2 with Type A connector for transmitting component digital video in high definition;
4. An IEEE 1394 terminal: IEEE 1394a-2000 4 pin (unpowered) high speed serial bus;
5. A USB terminal: USB 2.0 with mini-B connector for transmitting still images.

The serial bus and USB ports are both input/output, the others being strictly one-way outbound. In addition to asynchronous streaming and other minor functional improvements such as power-saving, suspend mode and packet concatenation, the 'a' upgrade on the bus standardized the 4-circuit alpha connector developed by Sony ('i-Link'), by 2000 widely in use in camcorders and laptops. It is fully data compatible with the 6-circuit alpha interfaces, but lacks the power lines, and has since been adopted by most VDC manufacturers.

Like most manufacturers, Canon included the 1394 serial bus since its data transfer rate generally outperforms USB and has become an industry standard. Among its many virtues, because the bus can move data in both directions, it is able to be used for 'pull' operations, such as extracting video from a DVC on demand. The pull agent is typically a video editing application such as HDVSplit, Windows MovieMaker, Adobe Premier Pro, Vegas and the like. Most video editors will recognize a variety of sources from which to transfer video: analogue ports such as S-video, RGB component and NTSC composite video, and digital ports such as 1394 interface, HDMI, DVI, etc. While video can be captured by external devices using any of the three Canon output-only ports, this has to be done on a 'push' basis, and to an analogue port for the AV or RGB ports. Receiving software such as video editors or dumb transfer programs such as ftp streaming variants for these is 'turned on' and waits for a data stream to be supplied by the DVC on playback, i.e. 'pushed' out.

So, here, we are really only interested in the 1394 bus. Several people in HDV connectivity forums have made the point that XP is HDV unaware. This is only half true since XP knows something about HDV, as we shall see in a moment, particularly in reference to the IEEE 1394 interface standard. Microsoft made it abundantly clear that

"Windows XP has built-in IEEE 1394 support. To use all the capabilities of the IEEE 1394 standard, your computer must have an IEEE 1394 adapter installed."

Thus, it would appear, no special drivers are required to use 1394 signalling and electrical interface with XP. XP currently supports the 1394a and 1394b variants. Degraded performance occurred on 1394b ports after installing SP2 as S400 data rates, typical of DVCs, was reduced to S100, since resolved with Hotfix 885222, later incorporated into SP3. This would cause video transfer errors as an affected 1394b port could not match the incoming data rate transmitted from an S400 device. Some 1394 adapter manufacturers replace XP's OHCI (open host controller interface, which contains the host controller driver for the bus) with a custom version, allowing S800-capable devices to run at full 800Mb/s transfer rates.

Suppose, for a moment, your Canon Vixia device is recognized by Windows XP. You open the Device Manager (from Control Panel/System) then open the Imaging Devices category. Among other devices you see 'Canon DV Camcorder'. Right click it then select the Driver tab on which you read:

Driver Provider: Microsoft
Driver Date: 7/1/2001
Driver Version: 5.1.2600.0

Now click the Details tab and from the drop-down list select Service. You read MSDV. Referring to the Microsoft Developer's Network, you search for the DV Video Subtypes. You read that for XP Service Pack 2 or later, supported data rates are 12.5, 25, 50 and 100 Mb/s. 50 corresponds to HD-DVCR, 1125 scan lines @ 60 HZ or 1250 @ 50); 100 to any of 1080/60i, 1080/50i or 720/60P. 1080/60i is US high definition television (16:9 aspect ratio, 1920 x 1080 pixels). For XP Service Pack 1 or earlier, supported data rates are 12.5 and 25, both of which correspond to 525 lines @ 60 HZ. So beginning with SP2, XP appears to be high-def enabled.

MSDV is the Microsoft Windows Driver Model (WDM) driver for DV camcorders. It contains the external device control functions - start and stop the tape, rewind, and so forth. When you see the words 'Microsoft DV Camera and VCR' in any Windows documents, the reference is to MSDV. MSDV supports the following generic (tape) transport commands: play, pause, stop, fast-forward, rewind, record, record-pause. In the article Differences in how Windows 2000 and Windows XP handle Serial Digital Interface signals, we are told

"In Windows XP, the msdv.sys driver sits on top of the IEC-61883 protocol driver (61883.sys)."

In fact, it sits on top of a protocol stack 5 deep. This applies to all patch levels of XP. IEC-61883 client drivers rely on 61883.sys to communicate with their devices using the IEC-61883 protocol, as depicted in the diagram in the article. There, we can see that the actual 1394 bus and port drivers establish link level handshaking and control the hardware through interrupt requests while the 61883 protocol driver manages the data traffic.

Above the 61883 driver sits the AV/C protocol driver, providing support for the IEEE 1394 Audio/Video Control (AV/C) protocol. To support the AV/C protocol, Microsoft supplies the following two drivers:

* Avc.sys
* Avcstrm.sys

Avc.sys is a function driver that provides support to establish and manage subunit/unit plug connections. Specifically, it controls subunits on AV/C-compliant devices as follows: it maps AV/C commands to WDM IRPs, retries requests (for example, if a subunit is busy), handles interim responses as pending IRPs, and routes responses to the correct subunit driver based on type, ID, and operation code. (Loosely, 'subunit' can be taken as a DVC's or VCR's tape subunit. In more recent devices, this can be flash memory or a hard disk file system.)

Avcstrm.sys is a lower-filter driver that adds support to assist with streaming the following specific data formats:

* Standard definition digital video (SDDV, the 61883-2 specification)
* MPEG2-TS (the 61883-4 specification)

Finally, at the top of the stack, is the vendor-supplied subunit driver. Generally these are device specific, but in the case of DVCs - and 1394 is used for far more than just DVCs - Microsoft has provided the generic subunit driver msdv.sys. This is what goes in the box at the top labelled 'Vendor-supplied AV/C Subunit Driver (IEC-61883 client driver).

It's also clear from the article Desktop HD Capture Solutions that there is no native support in XP for high definition video capture. In the companion article Understanding HD Formats there is a brief description of HDV, the standard used with Canon DVCs. It's a highly compressed MPEG-2 transport stream for use on mini DV tape. This is defined in the IEC 61883-4 standard, and supported by Windows' 61883 protocol driver mentioned above. Armed with this information, we shouldn't have too much difficulty figuring out why XP doesn't understand HDV.

By now I'm sure you're beginning to ask ok, so if avcstrm.sys supports MPEG2-TS, and 61883.sys implements IEC 61883-4, what the hec is msdv.sys doing with it?

I'll conclude the presentation in a subsequent post to this topic
kanone
Posts: 5
Joined: 27 Jun 2010 19:51
Location: Stouffville, Canada

Re: Canon HV20/HV30/HV40 IEEE 1394 issues with Windows

Post by kanone »

Here's the concluding post on issues with Canon Vixia connectivity with Windows XP...

I perhaps should have referenced the Wikipedia article on HDV in the previous post as it provides a more fulsome description than the reference given. It makes the useful point about bandwidth that "HDV employs MPEG-2 compression scheme with 8-bit chroma and luma encoding, 4:2:0 chroma subsampling and interframe prediction among other techniques to reduce video bandwidth." The original concept was an affordable high definition format, affordable because the significant, visually lossless compression minimized bandwidth/transmission times and storage costs. The 1080i vs 1080p discussion is informative. It might also be worth pointing out that

"HDV remains predominantly a tape-based format despite various tapeless recording solutions available on the market. The HDV consortium website states that the HDV trademarks may not be used on any products without a tape drive that can record and play video cassette compliant to the HDV format."

Much else is available on this page, particularly descriptions of the various devices Canon and Sony, the prime perpetrators of HDV, have and now offer.

Backing up a little, we know it is possible to capture HDV on Windows XP. The software for doing so replaces the generic subunit driver msdv.sys with a custom, HDV-aware version. Even as far back as 2001 when the DirectShow application programming interfaces were first used to control DVCs, Microsoft supported MPEG2-TS (see p. 6). Windows MovieMaker 2.1, the version attached to XP (all SPs) queries the Device Manager for a list of video capture devices. The Device Manager has a unit for detecting Imaging devices, and this unit uses msdv.sys to look for devices attached to any active IEEE 1394 ports. (The DM also reports this list to the Control Panel which organizes them under the Scanners and Cameras category.)

From the 2001 document cited in the preceding paragraph we can see that after connecting to the device, transport and timecode reader interfaces, the first task of a video editor, or its AV/C protocol subunit driver surrogate, is to determine the device's capabilities (pp. 5-7). Among the various items is the signalling mode and, sure 'nuf, the mode we're interested in, ED_MODE_SIGNAL_MPEG2TS, is available. But when we examine the AV/C streaming data formats, we discover that only SMPTE 314M (525/60, 625/50) and 370M (720p, 1080i) are supported by msdv.sys. This applies to the Windows Vista, Windows Server 2003 with Service Pack 1 (SP1), and Windows XP with Service Pack 2 (SP2) operating systems, as confirmed in the supported DV Video Subtypes reference. Notice that supported subtypes does include high definition video, but just not MPEG2-TS.

The 314M and 370M formats are built out of 61883-2 and 61883-3 data transmissions, resp., as provided by 61883.sys. The reason that 1394/61883 is used as the protocol stack, instead of some SMPTE signalling method, is simply that all digital video camcorders use the IEEE 1394 standard.

Development of Windows drivers for streaming media device using this approach takes place under the Win32 and COM programming model. With the advent of the Windows Vista and 7 operating systems, which use the Visual Studio family of development suites, this entire development model has been replaced with Windows Media Foundation. Much of the DirectShow, Windows Media SDK and DirectX Media Objects functionality has been transferred to WMF, and much that is new added. Windows 7 now supports 1394 transfer rates of S800, S1600 and S3200.

In sum, Windows XP, including all SPs, will not recognize a device on a 1394 port which advertises itself as HDV. When msdv.sys queries 1394 devices for their capabilities, a Canon Vixia device set to output HDV on the 1394 ports responds with a class the subunit driver doesn't recognize. The driver duly reports to the operating system there is no device present. Thus, nothing appears in Control Panel, Device Manager or your favourite video editor.

We began by assuming your Canon HVC was recognized by Windows. That's how we discovered that it used the MSDV Service. Here are two ways to guarantee any member of the Vixia family will be recognized. Both involve down converting video recorded in HDV to DV on output from the HVC. We'll refer to the Play/Out setup menus Setup1 and Setup2 in Play mode.

* Ensure you have installed either SP3 or SP2 with Hotfix 885222
* Be sure your camera is turned on in Play mode.
* Assume you've recorded some HDV video on miniDV tape (such as Sony DVC), and the recorded tape is in the HVC.
* Connect one end of your 1394 (Apple 'Firewire', Sony i-Link) cable to your computer; do not connect the other end to the camera as this will make the Playback Std and DV Output settings unavailable for adjustment.
* In Control Panel, open the Scanners and Cameras category.

Case 1. On your camcorder's menu Setup 1, parameter Playback STD is set to either 'A' (Auto) or DVD.

On menu Setup2, parameter DV Output must be set to 'DV Locked'. The setting appears as 'DV' on the menu.

Case 2. Parameter DV Output is set to 'DVD/DV'. (DVC switches between the two to match recording standard.)

On menu Setup1, parameter 'Playback STD' must be set to 'DV'

* Adjust settings on the DVC according to either Case 1 or Case 2. Either one delivers HDV down converted to DV.
* Plug the other end of the 1394 cable into the Canon HVC's 1394 port.
* The values for parameters DV Output on menu Setup2 and Plaback STD on menu Setup1 disappear and the parameters rendered inoperable as, once a 1394 session has been established, the parameter values cannot be changed. To change them, disconnect one end of the 1394 cable.
* On the Scanners and Cameras panel a new entry appears, 'Canon DV Camcorder' (as a result of the device self-identifying itself to the MSDV Service.)
* Open the Device Manager and expand the 'Imaging devices' category. Right click on 'Canon DV Camcorder' and click on Properties. In the General tab the following information is displayed:

Device type: Imaging devices
Manufacturer: Canon
Location: AV/C Multifunction Device

... and the status is reported as 'working properly'.

* Driver details, mentioned at the beginning of this post, are reported on the Driver tab. These refer to msdv.sys.
* On the Details tab appear a number of fields, the first of which (Device Instance Id) reports the make, model and serial number of your HVC.
* Dismiss the Properties dialogue, close the Device Manager and shut down the Control Panel.
* Open your favourite video editor, for example WMM, and select the 'Capture from video device' function.
* Your Canon HVC will be listed there. You can select it and proceed to upline dump your video.

I hope this has been helpful.
User avatar
Stephan
Site Admin
Posts: 592
Joined: 20 Mar 2010 18:51
Location: Paris, France

Re: Canon HV20/HV30/HV40 IEEE 1394 issues with Windows

Post by Stephan »

Welcome here, kanone!

1st comment: I would have stated the recommended checklist upfront, before the extensive explanations...

2nd comment: the recommendation to use SP2+ with XP, and apply KB885222 on top of SP2 if necessary, matches what we have all experienced basically. But where you lose me is, why do you recommend to downconvert to standard definition DV - if I understand correctly? Some (most?) people will want to capture high definition HDV, so your checklist needs to allow for that, IMHO.
kanone
Posts: 5
Joined: 27 Jun 2010 19:51
Location: Stouffville, Canada

Re: Canon HV20/30/40 IEEE 1394 connectivity issues with Wind

Post by kanone »

Good point about specifying the checklist up front. I probably need to shorten the presentation for those who don't need all the technical details.

Also, your second point is well-taken, and I apologize for the obvious confusion resulting from the excess detail. So let me re-state: the Windows XP generic subunit driver msdv.sys does NOT support MPEG2-TS transport streams and therefore will not recognize a device advertising itself as HDV. The reason for downconverting the camcorder's output to standard definition is that the device is now advertising itself as SDL-DVCR (525-60 or 625-50), a standard the msdv driver does recognize, and as a result reports the camcorder as now connected on the 1394 port. SDL-DVCR transmissions are at 25 Mbps whereas MPEG2-TS transmits at 400 Mbps.

The purpose of my article was to explain why it does not, and to provide a method so that Windows XP will always, recognize an HDV camera. There is, unfortunately, no way for XP to capture high definition video encoded in HDV format. There are high definition protocols XP will recognize, but HDV itself is not one of them. The solution, as noted in the article, is to use a third-party driver. I am in the process of researching several of these, and will provide a follow-up article once I have completed my investigation.

Again, many thanks for your comments. And, BTW, what does IMHO mean?
User avatar
Frank
Posts: 36
Joined: 23 May 2010 21:30
Location: New York, NY
Contact:

Re: Canon HV20/30/40 IEEE 1394 connectivity issues with Wind

Post by Frank »

Just a couple of quick points -

1. HDV camcorders have IEEE 1394 ports because there's a protocol defined (IEC 61883-4) for the transmission of HDV datastreams over an IEEE 1394 link. (IEC 61883-2 is used for DV transfers.)

2. When transmitting either DV or HDV, the IEEE 1394 link operates in S100 (98.304 MHz) mode. In fact, the IEEE 1394 ports on some HDV camcorders don't even implement the S200 (196.608 MHz) and S400 (393.216 MHz) modes of operation. There's no need since the total datarate of either DV or HDV is well under 30 Mbps.

3. The component video output jacks found on the Canon HV20/HV30/HV40 camcorders, and all other HDV camcorders as well, operate in YUV mode, not RGB mode.

4. Almost every Windows-based HDV user that I've come across uses Paviko's HDVSplit utility program for HDV ingest.

Regards,

Frank, Independent Consultant, Somewhere in the State of New York
Read Frank's thoughts on HDV
[ also covers AVCHD (including AVCCAM & NXCAM) and XDCAM EX ].

P.S. IMHO = in my humble opinion. Of course, some of us are more humble than others. :)
User avatar
Stephan
Site Admin
Posts: 592
Joined: 20 Mar 2010 18:51
Location: Paris, France

Re: Canon HV20/30/40 IEEE 1394 connectivity issues with Wind

Post by Stephan »

Don't get carried away in the details of your investigations! Actually it's fairly simple: just use any of the commercial editing software that are available, they will ordinarily capture HDV for you, and will also further help you all along your editing workflow. They often have free trials, so you can check it works okay technically.
Frank wrote:4. Almost every Windows-based HDV user that I've come across uses Paviko's HDVSplit utility program for HDV ingest.
I never used HDVSplit! Never felt the need to. It's so easier to capture with your editing program (IMHO again ;-)
User avatar
Frank
Posts: 36
Joined: 23 May 2010 21:30
Location: New York, NY
Contact:

Re: Canon HV20/30/40 IEEE 1394 connectivity issues with Wind

Post by Frank »

Stephan wrote:I never used HDVSplit! Never felt the need to. It's so easier to capture with your editing program (IMHO again ;-)
Then you're one of the lucky ones, sir!

I have recommended HDVSplit to many, many people who had regular, full-blown, commercial NLE packages, from Adobe Premiere Pro to Sony Vegas Pro, who were unable to ingest HDV using the software that they had paid for. In virtually every case, HDVSplit came to the rescue for them.

As to the cause of their problem, I suspect that in many if not most cases it was the controller chip used in their FireWire card. HDVSplit seems more tolerant of controller chips that don't implement the FireWire protocol properly.

I haven't been keeping count, but I've probably seen this problem more often in notebook computers, especially those with add-on PC Card FireWire ports rather than built-in FireWire ports, than in desktop systems.

FireWire controller chip incompatibility problems also occur frequently with professional grade multichannel audio interfaces.

Regards,

Frank.
chrishull3
Posts: 64
Joined: 05 Jun 2010 10:04
Location: Yeovil, UK

Re: Canon HV20/30/40 IEEE 1394 connectivity issues with Wind

Post by chrishull3 »

never used split on my previous sony hdv cams or my current HV30,pinnacle or other programns capture hdv fine.
kanone
Posts: 5
Joined: 27 Jun 2010 19:51
Location: Stouffville, Canada

Re: Canon HV20/30/40 IEEE 1394 connectivity issues with Wind

Post by kanone »

Frank,
Thanks for your comments. After re-reading my original article, I realized I gave the mistaken impression that DV camcorders implemented IEEE1394b which in fact is generally not the case: IEEE1394a is the standard in general use today because, as you correctly point out, the transfer rate is under 30 Mbps (actually 28.8) and T100 provides quite sufficient bandwidth.

I am surprised however at your remark about the component analog output being YUV. At least for my Canon Vixia HV30 it is most definitely RGB, as evidenced by the manual and the supplied RGB cable set, complete with colour-coded connectors!

Cheers,
Duncan
steve
Posts: 74
Joined: 28 May 2010 10:04
Location: UK

Re: Canon HV20/30/40 IEEE 1394 connectivity issues with Wind

Post by steve »

Duncan,

Component is Y Cr Cb (or Y Pr Pb) which is connected to display devices via the supplied cable thus:
Y = Composite (green plug)
Cr/Pr = Red component (red plug)
Cb/Pb = Blue component (blue plug)
These are the standard colours for the plugs. See page 68 of the user's manual, top of page. The manual is available on Frank's webpage, (I don't own a HV30)

Steve
Post Reply