XHCI Host Driver

I am trying to write USB XHCI HOST and HUB driver over Kernel Mode Driver Framework ,
Challenge is to support as old as Windows XP/Server2003.
Where shall i start to implement the driver?

1 Like

Path to madness. You are doomed to fail. The only tiny slim hope you have is if you control all client drivers in addition to the host and hub. Why are you doing this? Why are you targeting an unsupported OS that is close to 20 years old?

It’s not immediately clear to me that hardware capable of running WIndows XP can keep up with USB 3.

@Tim_Roberts said:
It’s not immediately clear to me that hardware capable of running WIndows XP can keep up with USB 3.

I have a Z77 motherboard , it has Asmedia chipset and driver came with it , It can do fine, yes a i7 3770K and heck even i7 8700K (on certain motherboard) can run Windows XP.
I want a XHCI driver to use in VM

@Doron_Holan said:
Path to madness. You are doomed to fail. The only tiny slim hope you have is if you control all client drivers in addition to the host and hub. Why are you doing this? Why are you targeting an unsupported OS that is close to 20 years old?

People in VIA , Asmedia,NEC , Renesas,AMD are mad then? They made XHCI driver for XP>
Jokes and anger aside , No Engineering challenge are less.
Why are you targeting an unsupported OS that is close to 20 years old? Their something called legacy software which dont like NT6 ,
It was designed to run on NT3.1 but runs fine on XP/2K3 bur hates anything to do with Vista and higher ,
Their many such driver and software in industrial use,

Keeping XP aside , then where to start to write a XHCI driver for Windows 7 then?

If Asmedia has a driver, why don’t you use it? I did encounter the Renesas XHCI driver for Windows 7. That was a multi-man-year effort, and even then it didn’t work reliably, because so many client drivers make assumptions about their environment. Lots of the communication between the host controller drivers and the USB upper layers is not documented. Doron is exactly right in his assessment. If you have a team of experienced driver developers who thoroughly understand the XHCI specification, you might be able to produce something by next year, but otherwise the project is doomed.

If Asmedia has a driver, why don’t you use it? Unfortunately its works only on Asmedia chipset , i wish KVM provided a XHCI driver themselves.

Mr. Holan and Mr. Roberts have it exactly correct. What you’re proposing is a full time multi-year project, that requires very significant specialized knowledge of the XHCI spec (like as a result of being a participating member of the implementers forum) … and even if you HAVE such knowledge, you’d also need a whole lot of knowledge of how the Windows USB stack works, and the “traditions” of how Windows discovers and initializes USB devices.

What you’re proposing is a “fool’s errand”

> @Dibya said: > I am trying to write USB XHCI HOST and HUB driver over Kernel Mode Driver Framework , > Challenge is to support as old as Windows XP/Server2003. > Where shall i start to implement the driver? Hi can I know more about xhci, actually can you give some presentation on xHCI please

> @Dibya said: > I am trying to write USB XHCI HOST and HUB driver over Kernel Mode Driver Framework , > Challenge is to support as old as Windows XP/Server2003. > Where shall i start to implement the driver? Hii please i really need your help in understanding of xHCI

Why do you think you need this? The tone of your posts tells me you aren’t serious. The XHCI specificaiton is publicly available here:

https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf

However, it is 645 pages long, and is highly technical. Why do you think you need this?

I’m doing my thesis in xHCI DBC so i want it learn

@kamesh … please stop posting requests with your email address asking people to help you… so I can stop deleting them. Keep your activities within the context of this forum.

Also, you’re hijacking the OPs thread here. Please don’t do that.

Peter

The way you learn this is by (a) reading the spec, and (b) comparing it to an existing implementation, like the Linux XHCI driver. You have months of work ahead of you to understand this specification. No one here can explain it in a few emails.

I disagree - the worst thing for a novice to do is to consult a reference implementation. The understanding of foundational concepts can be no more easily obscured by over reliance on the method that someone has used to implement them. If you are already conversant in the concepts, then the reference implementation accelerates your progress because specifications written in English (or any other verbal language) are necessarily less efficient at conveying the same information. There is still no royal road to geometry

Their something called legacy software which dont like NT6 ,
It was designed to run on NT3.1 but runs fine on XP/2K3 bur hates anything to do with Vista and higher

Other than going the route of developing the XHCI driver which will be very difficult, why not try the following two potential solution.

  1. Keep some old PCs (or even some new industrial PCs) to run the legacy applications. At work we have old MCU development tools which only runs on DOS and Windows 2K/XP since our product can be in the market for more than 30 years.

  2. port the legacy application to Windows 7/10. But I understand that this may be difficult.