I2CTestTool returns NULL, is RHPROXY a dummy on NT core based Windows 10 Pro, Home, Enterprise OS

Hi Experts@OSR,

Based on these links: -
https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/4a25ff63-b421-4a23-856f-acbfcfd93f83/support-for-resource-hub-proxy-rhproxy-driver-in-ltsb-branch?forum=WindowsIoT

Official Statement from MSFT Employee: -
[1] The Resource Hub Proxy driver service is a kernel mode driver. It exists in windows 10 only(Home,Pro, Education, or Enterprise),but it does not exist before 1709 version

[2] I ensured C->windows->System32->drivers->rhproxy.sys is indeed present in Enterprise and Pro editions of 2019H1, so i understand that RHPROXY support is there on these machines.

[3] i followed this link [https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/enable-usermode-access] for right ASL node details and now i have a valid Valid ACPI Table
I ensured that there is no Yellow bang on the resource hub proxy and Device Status on Resource Hub Proxy device “This device is working properly.”

[4]
Result of devcon.exe status *MSFT8000:-
ACPI\MSFT8000\1
Name: Resource Hub proxy device
Driver is running.
1 matching device(s) found.

[5] however, I2CTestTool.exe returns “There are no I2C controllers on this system” statement. However my Desktop PC [running NT core based windows Pro 10 OS] has Serial IO controller drivers from Intel.

[6] I am confused as to how to interpret “step 5”. does that RHPROXY is dummy/useless. Do i need to write UMDF on top of RHPROXY to access

[7] According to your OSR article, when you refer to “Resource Hub”, i assume you are talking about RHPROXY ?

[8] After reading through some articles, I2CTestTool.exe works only on IOT Core based Kernels. so does that mean, i can forgo I2CTestTool.exe results and move on with step 7 OSR article and start writing UMDF based application?

Thanks

No. If you’re using RHPROXY you don’t have to write your own driver. It IS your driver.

Peter

Hi Peter,
Thanks for answer.
[1] how to move further on this. what is the next step for me [is the I2CTestTool.exe is returning back NULL expected]?
[2] Meanwhile, Tim Roberts say the RHPROXY on Home, Pro versions are dummy and inoperative. You are saying rhproxy is my driver and can do the job. please clairfy?
[3] Inspite of step[1], i can go ahead and write an application based on RHPROXY?
[4] Can you please point next steps on how to proceed on this. My Initial intention was to use I2CTestTool based code to write a DLL to access I2C. Now that it is returning NULL. I am at cross roads. plz guide.
[5] Can you please point to some application using RHPROXY to access I2C.

Thanks

how to move further on this.

On what? You have never really said what your final goal is, just like so many people who ask questions here. I2CTestTool is just a tool, it’s not an end goal. I2CTestTool is built for Windows IoT. It’s not going to run on the desktop systems. End of story.

i can go ahead and write an application based on RHPROXY?

If you’re running on Windows IoT, then sure you can. If not, then there wouldn’t be much point, because it’s not going to work.

Can you please point to some application using RHPROXY to access I2C.

I don’t understand why you’ve become obsessed with RHPROXY. If you want to access I2C resources on a Windows desktop system, then you need to be asking, “how can I access I2C resources on a Windows desktop system?” The answer to that question does not involve RHPROXY or I2CTestTool.

Hi Peter, Tim
ok understood

Goal: - To write an User space application on top of desktop windows [NT Core based Windows Home, Pro] to access I2C slave.

Thanks for finalizing this statement “The answer to that question does not involve RHPROXY or I2CTestTool”.

i use your better statement “how can I access I2C resources on a Windows desktop system?”

which of the below is right example to start with?
[1] https://docs.microsoft.com/en-us/samples/microsoft/windows-driver-samples/skeleton-i2c-sample-driver/
?
[2] https://github.com/microsoft/Windows-driver-samples/tree/master/sensors/ADXL345Acc

If OSR has better way/example to do it, please point to it.

Thanks

If you can get your device to fit into the sensor driver model, that’s not too hard. Do you know how to access your I2C device, from a physical standpoint? Do you do so through ACPI method calls?

If you need to pound registers, then I think you need an I2C driver.

This is one of those rare times when I must disagree with Mr. Roberts.

I think you’re in the right track using RHPROXY. It’ll give you easy access to your I2C device without having to write your own driver. It’s the WinUSB of I2C.

As to why the I2CTestTool does work for you… I have no idea. You need to put some effort into debugging the problem. Either write yourself a little test program or walk through i2cTestTool with the debugger. Find out exactly what’s failing. Figure out why.

This is a problem that is more amenable to being solved by you spending time at the computer debugging, and less amenable to us trying to use a crystal ball to guess at what might be going wrong in your system.

Peter

Hi Peter,
Thanks for your expert reply. It gave much needed confidence. I will be working on finding “why I2CTestTool fails”.

Regards

The primary problem we’re having, Mr. “vlsireddy” is that none of I has actually done what you’re trying to do. I’ve used RHPROXY on IoT… but it is new to “regular” Windows. And, given that you have to fool with your ACPI BIOS to use it, those of us who do this stuff for a living don’t ordinarily have the time to wire-up an I2C device, make the ACPI changes, fire-up a system, and see what we get… just for the fun of it.

I am very interested to hear where your explorations go. Because, if you can use RHPROXY on “ordinary” (that is, non-IoT) Windows systems that’ll be a step in the right direction. Of course, we still have the problem of having to change the BIOS… but that’s workable in many cases.

So… that’s why you’re not getting clear, step-by-step guidance from folks here. Your trying to do something that we have never done, and that has only recently been allowed on Windows.

Peter

Hi Peter,
I was able to get through this hurdle and have the I2CTestTool working on windows 10 Pro [Non-IOT Core].
Not much changes are required from what is put in the
https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/enable-usermode-access

however, Microsoft needs to update their docs a lot on I2Cdevice API’s.

Thanks

Thanks for posting back.

Can you tell us what you had to do to get this working… and what doc changes are needed?

So whoever in the community that comes after you can benefit from your experience.

Peter