This blog was originally written by Thomas Cantwell, Deepak Kumar and Gobind Vijayakumar from DELL OS Engineering Team. 

Introduction -

Dell PowerEdge 13G servers (Dell PowerEdge 13G servers) are the first generation of Dell servers to have USB 3.0 ports across the entire portfolio.  This provides a significant improvement in data transfer speed over USB 2.0.  In addition, it offers an alternative method to debug Microsoft Windows OS, starting with Windows 8/Windows Server 2012 and later.

Background –

Microsoft Windows versions have had the ability to kernel debug using USB 2.0 since Windows 7/Windows Server 2008 R2, though there were some significant limitations to debugging over USB2.

1)      The first port had to be used (with a few exceptions – see http://msdn.microsoft.com/en-us/library/windows/hardware/ff556869(v=vs.85).aspx ). 

2)      Only a single port could be set for debugging.

3)      You had to use a special hardware device on the USB connection. (http://www.semiconductorstore.com/cart/pc/viewPrd.asp?idproduct=12083).

4)      It was not usable in all instances – in some cases, a reboot with the device attached would hang the system during BIOS POST.  The device would have to be removed to finish the reboot and could be reattached when the OS started booting.  This precluded debugging of the boot path.

USB 3.0 was designed from the ground up, by both Intel and Microsoft, to support Windows OS debugging and has much higher throughput and is not limited to a single port for debugging.

Hardware Support - 

As previously stated, Dell PowerEdge 13G servers will now support not only USB 3.0 (also known as SuperSpeed USB), but also USB 3.0 kernel debugging. 

BIOS settings -

Enter the BIOS and enable USB 3.0 – it’s under the integrated devices category (By default, it is set to Disabled).

  • IMPORTANT!  ONLY enable USB 3.0 if the operating system has support!  Windows 8/Windows Server 2012 and later have this capability.  If you enable this and the OS does NOT have support, you will lose USB keyboard/mouse support when the OS boots.

Ports –

  • USB 3.0 ports on Dell PowerEdge 13G servers can be used for Windows debugging (with USB 3.0 enabled and the proper OS support). 
  • Some systems, such as the Dell PowerEdge T630, also have a front USB 3.0 port.  The Dell PowerEdge R630/730/730XD have only rear USB 3.0 ports.  The Dell PowerEdge M630 blade also has one USB 3.0 front port.

Driver/OS support -

USB 3.0 drivers are native in Windows Server 2012 and Windows Server 2012 R2. There is no support for USB 3.0 debugging in any prior OS versions.

USB3 Debugging Prerequisites –

  • A host system with xHCI(USB 3.0) Host Controller.  The USB 3.0 ports on the host system do NOT need USB 3.0 debug support – only the target system must have that.
  • A target system with xHCI(USB 3.0) Host Controller that supports debugging.
  • A USB 3.0 (A-A) crossover cable.You can get the cable from many vendors and we have provided one option below.
    • Note: The USB 3.0 specification states that pin 1 (VBUS), 2 (D-), and 3 (D+) are not connected. This means that the cable is NOT backwards compatible with USB 2.0 devices.
  • http://www.datapro.net/products/usb-3-0-super-speed-a-a-debugging-cable.html

Steps to Setup Debugging Environment -

  1. Make sure USB 3.0 is enabled in the BIOS on both host and target.
    1. All Dell 13G servers support USB 3.0 debugging.
    2. Verify OS on host and target systems.
      1. OS must be Win8/WS2012 or Win 8.1/WS2012R2 on both.  For the debug host, a client OS is perfectly fine for debugging a server OS on the debug target. 
      2. It is strongly recommended to use Windows 8.1 and/or Windows Server 2012R2 on the host to ensure you can get the latest supported Windows debugging software – and you can then debug all current and older OS versions (that support USB 3.0 debugging) from the host.

                                                               i.      http://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx

2.On the target system with the help of the USBView tool, locate the specific xHCI controller which supports USB debugging. This tool is the part of the windows debugging tools.  See the following link: http://msdn.microsoft.com/en-in/library/windows/hardware/ff560019(v=vs.85).aspx .

To run this tool, you must also install .Net 3.5. It is not installed by default on either Windows 8/2012 or Windows 8.1/2012R2.

  1. On Dell PowerEdge 13G servers, there are several USB controllers – some will be designated “EHCI” – this is a USB 2.0 controller.  The controller for USB 3.0 will be designated “xHCI”, as we see below – this is the USB 3.0 controller.
    1. You can see the bus-device-function number of the specific xHCI controller which will be used for debugging below – this is important for proper setup of USB 3.0 debugging

2.Next, you need to find the specific physical USB port you are going to use for debugging.

  1. For Dell servers the “SuperSpeed” logo is presented beside any USB3 ports

  • Connect any device to the port you wish to use for debugging
  • Observe changes in USBView (you may have the refresh the view to see the new device inserted in the port)
  • Verify the port does indeed show it is “Debug Capable” and has the “SS” on the port.    

 

 

  1. Operating System Setup – Target system
    1. Open elevated command prompt on target system and run following commands.
  • bcdedit /debug on
  • bcdedit /dbgsettings usb targetname:Dell_Debug (Any valid test name can be given here)
  • bcdedit /set "{dbgsettings}" busparams b.d.f(here provide bus, device and function number of the required xHCI Controller)
    • Ex : bcdedit /set "{dbgsettings}"busparams 0.20.0 . 
    • Busparams settings are important since Dell PowerEdge 13G systems have multiple USB controllers.  This ensures debugging is enabled only for the USB 3.0 (xHCI) controller.
    • Reboot server after making the changes above!

2. Connect the host and target system by using the USB A-A crossover cable. Use the port identified at above.

Steps to Start the Debugging Session :-

Open compatible version of WinDbg as administrator (very important!). 

  1. Starting the debug session as administrator will ensure the USB debug driver loads.
  2. For USB 3.0 debugging, the OS on the host must be Windows 8/Server 2012 or later and match the “bitness” of the target OS - either 32-bit (x86) or 64-bit (x64). If you are debugging a 64-bit OS (all 2012+ Windows Server versions are 64-bit), then the host OS should be 64-bit as well.
  3. Open File->Kernel Debug->USB and provide the target name you set on the target (in our example,  targetname: Dell_Debug) . Click OK


 

4.USB debug driver will be installed on host system. This can be checked in the Device Manager (see below) and for successful debugging there should not be a yellow bang on this driver. It is OK that it says “USB 2.0 Debug Connection Device” – this is also the USB 3.0 driver (works for both transports). This driver is installed the first time USB debugging is invoked. 

Notes:

  1. If you are debugging for an extended time, disable the “selective suspend” capability for the USB Hub under the xHCI controller where USB debug cable is connected.

In Device Manager:

  1. Choose the “View” menu
  2. Choose “View devices by connection”.  There are multiple USB hubs, so to get the correct hub, you need to find the hub that is under the xHCI controller.
  3. Navigate the specific xHCI controller.
  4. Under the xHCI controller, you will see  USB Hub. 
  5. Choose Properties for the USB Hub, and then Power Management and uncheck “Allow the computer to turn off this device to save power” (see picture below).

 

Summary – Dell PowerEdge 13G servers with USB 3.0 provides a significant new method to debug modern Windows operating systems.

  • USB 3.0 is fast.
  • USB 3.0 debugging is simple to set up.
  • USB 3.0 debugging requires a minimal hardware investment (special cabling).
  • For Dell PowerEdge 13G blades (M630), this provides a new way to debug an individual blade.  Prior methods to debug Dell blades used the CMC (Chassis Management Controller), and routed serial output from the blade to the CMC – harder to configure and limited to serial port speeds.
  • A nice comparison of debug transport speeds – somewhat dated, but gives a good general idea on the speeds.

Transport Throughput (KB/s) Faster than Serial
Serial Port 10 0%
Serial Over Named Pipe 50 500%
USB2 EHCI 150 1500%
USB2 on the Go 2000 20000%
KDNET 2400 24000%
USB3 5000 50000%
1394 17000 170000%