3 Replies Latest reply on Dec 10, 2015 11:09 AM by Carlos_A

    How to access i2c port on NUC5i5MYBE using Win32 APIs like SetupDixxx and CreateFile Functions.

    bhoomil Community Member

      Hi There,

      Currently myself working on Intel NUC5i5MYBE board with Windows 10 Enterprise Edition.

      My focus is on Low Speed Custom Solutions Header of NUC5i5MYBE.

      In this Low Speed Header we have GPIO, I2C and SMBus related pins.


      My target is to use attached any I2C sensor which is slave at Pin #13 and #14 for taking I2C0 as I2C port. I have done related changes in the Intel Visual BIOS to make that pins as I2C0.




      Now in Device manager I have I2C0 port entry.Screenshot (5).png

      And system is serving I2C0 port as iaLPSSi_I2C_Device driver which is install by Windows 10 itself.

      Here is the output of devcon.exe utility with driverfiles option.



          Name: Intel(R) Serial IO I2C Host Controller - 9CE1

          Driver installed from C:\Windows\INF\ialpssi_i2c.inf [iaLPSSi_I2C_Device]. 1 file(s) used by driver:




      In My custom Linux I have no any problem while accessing GPIO or I2C in the same board because I have beautiful /dev and /sys fs infrastructure.


      But Problem with Windows environment,

      I know the flow how to access any device using device interface GUID in Windows using SetupDixxx APIs for gettting device path and CreateFile function to open the device.

      But I don't have interface GUID or I didn't find yet till now in my system.


      Previously In one of my NUC board I have combination of Atom processor with Windows 7. And what the cool things is I have got the GUID related information from Intel header files itself.

      This link : https://downloadmirror.intel.com/24548/eng/Intel%20Embedded%20Drivers%20for%20Microsoft%20Windows7%20(32%20and%2064-bit)…

      And Download Intel Embedded Drivers for Windows* 7 (32-bit & 64-bit)


      But For Windows 10,

      1) Driver installed OS itself.

      2) Intel not provide any documents or header files for accessing such low level buses using standard Win32 APIs.

      3) Only things I found over internet is ms-iot github site, have Windows.Devices namespace concept which I personally don't like because I don't move to C#.


      Can anybody help me out here?

      Thanks In advance.