6 Replies Latest reply on Dec 22, 2015 10:46 AM by EstebanC_Intel

    Intel NUC I5 Custom solutions header support for Linux


      Hi Everyone,

      I recently bought a nuc i5 model "NUC5i5MYBE". I installed ubuntu 14.04 OS on it. I am mainly interested in using the custom solutions header of the computer for robotics applications. I read the manual provided by intel: "http://downloadmirror.intel.com/24566/eng/NUC5i5MYBE_TechProdSpec04.pdf" . I got the I2C on custom solutions header to work.


      Things I could not get to work are:

      1. The SMBus driver for Wildcat Point-LP SMBus Controller (rev 03) is not loaded and I do not see i2c smbus in /dev/i2c interface. The i2c devices detected are:

      i2c-0    i2c  Synopsys DesignWare I2C adapter     I2C adapter
      i2c-1    i2c  Synopsys DesignWare I2C adapter     I2C adapter
      i2c-2    i2c  i915 gmbus ssc             I2C adapter
      i2c-3    i2c  i915 gmbus vga             I2C adapter
      i2c-4    i2c  i915 gmbus panel           I2C adapter
      i2c-5    i2c  i915 gmbus dpc             I2C adapter
      i2c-6    i2c  i915 gmbus dpb             I2C adapter
      i2c-7    i2c  i915 gmbus dpd             I2C adapter
      i2c-8    i2c  DPDDC-B                    I2C adapter
      i2c-9    i2c  DPDDC-C                    I2C adapter


      The first two are from custom solutions header. I do not thinks smbus i2c is loaded. The lspci -v command shows the following for smbus:

      00:1f.3 SMBus: Intel Corporation Wildcat Point-LP SMBus Controller (rev 03)

          Subsystem: Intel Corporation Device 2058

          Flags: medium devsel, IRQ 18

          Memory at f7038000 (64-bit, non-prefetchable) [size=256]

          I/O ports at f040 [size=32]

      I do not see any kernel driver in use. I tried loading i2c-i801 but did not do anything. Is there any driver that works with SMBus controller for linux?


      2. The GPIO pins do not show up. I made sure that GPIO pins lock down is disabled. I disabled NFC header in Bios. I checked that pin 11 , pin 12, pin 10 are GPIO24, GPIO14, GPIO 44 according to Bios/Manual. So I tried to enable the gpio pins using sysfs interface according to:

      echo -n "24" > /sys/class/gpio/export

      echo: write error: No such device


      I tried all the pins I could find in the manual without any success. I also checked the debugfs file located at /sys/kernel/debug/pwm. The file is empty according to the command : "sudo cat /sys/kernel/debug/pwm".  So I do not know if the GPIO pins are getting activated or linux is not able to detect the pins.  I do not find any errors in my dmesg / syslog. The relevant portion of dmesg which shows io being reserved are here:

      [0.192962] system 00:00: [io  0x0a00-0x0a0f] has been reserved
      [0.193281] system 00:02: [io  0x0680-0x069f] has been reserved
      [0.193283] system 00:02: [io  0xffff] has been reserved
      [0.193284] system 00:02: [io  0xffff] has been reserved
      [0.193285] system 00:02: [io  0xffff] has been reserved
      [0.193287] system 00:02: [io  0x1800-0x18fe] could not be reserved
      [0.193288] system 00:02: [io  0x164e-0x164f] has been reserved
      [0.193354] system 00:04: [io  0x1854-0x1857] has been reserved


      I read online that I need to install specific drivers for gpio to get recognized. Is there any such driver for GPIO that I need to load in linux or am I exporting wrong numbers into export file above?


      My main issue is with the GPIO pins. I am not too concerned about smbus as I am already using I2C and am able to successfully communicate with other devices such as IMU's and microcontrollers. Thank you for reading through my post. Any help is appreciated.



      Gowtham Garimella ,

      PhD Student,

      ASCO Lab

      Autonomous Systems, Control and Optimization (ASCO) Lab

      Johns Hopkins University.

        • 1. Re: Intel NUC I5 Custom solutions header support for Linux

          Hi Gowtham


          I'm planning to buy the I3 version of this board just because of I2C. During my research, I found the following post: NUC DE3815TYBE and Linux Support for Custom Solutions Header

          It's not the same board, but at the time it was the best I could find about I2C and NUC. There, it seems that the BIOS settings influence the detected I2C devices. It's a wild guess, but maybe you can try playing with the BIOS settings and check if the SMBUS appears.

          Second option is to install "apt-get install lm-sensors". It contains a tool called sensors-detect. It's interactive and usually quite successful in detecting SMBUS and I2C devices and tells you what to do to activate them (e.g. which module to load).


          Now I've got a question:

          How precisely did you activate the I2C pins of the custom solutions header (BIOS settings, loaded modules like i2c-dev and i2c-i801, etc.)?

          Would be nice if you could share your settings.


          Cheers, Martin

          • 2. Re: Intel NUC I5 Custom solutions header support for Linux

            Hi Martin,

            Here are the steps I followed to get i2c to work after installing ubuntu 14.04. I am using kernel 3.14.43


            1. Open Bios by pressing F2. Then go to Advanced -> Devices -> Onboard Devices. There you can configure the custom solutions header pins. Make sure the pins 13,14,15,16 are configured as I2C. Then save the bios by pressing F10 and reboot.


            2. Now once booted back into linux. Install i2c tools using :

            sudo apt-get install lm-tools


            3. Add the following module to /etc/modules : "i2c-dev" and reboot the computer


            4. Then check the i2c buses using :

            sudo i2cdetect -l

            You should find the i2c bus named "Synopsis Designware". You can also find the i2c buses at /dev/i2c-*

            5. You can detect the devices on the designware using:

            sudo i2cdetect -y -r 0

            for i2c-0 and 1 etc

            There are many codes out there to use i2c. In particular this one proved to be helpful.

            Using the I2C Interface – Raspberry Pi Projects

            Now back to my questions, two more things to say:

            1. I checked for gpio from file /sys/kernel/debug/gpio and not from /sys/kernel/debug/pwm.

            2. I found that on the PCI devices there is  a device  Intel Wildcat Point-LP LPC Controller and driver called lpc_ich loaded. I check online LPC interface is a Low Pin count interface for providing GPIOs etc. Can anyone provide me with some information on what this controller is and if it is related to the GPIO pins above.

            Finally, I am also willing to write a kernel driver for this if it helps the community. But I will need some directions on whether it is needed or how to go about finding the memory addresses corresponding to the GPIO pins etc.

            - Gowtham

            • 3. Re: Intel NUC I5 Custom solutions header support for Linux

              Hi Gowtham


              Thanks a million for your detailed description!


              Meanwhile I installed Debian Jessie on my NUC5I5RYH (doesn't have a costom solutions header) and looked for the SMBus.

              That's what sensors-detect found:


              Do you want to probe the I2C/SMBus adapters now? (YES/no): y

              Found unknown SMBus adapter 8086:9ca2 at 0000:00:1f.3.

              Sorry, no supported PCI bus adapters found.


              I guess your first assumption was right. There is no driver for this type of SMBus controller. i2c_i801 is loaded anyway in my case, without activating it manually.

              I found this: Linux Kernel Driver DataBase: CONFIG_I2C_I801: Intel 82801 (ICH). There, this version of SMBus devices is mentioned (9ca2), but that doesn't help (me).


              Another hit: InstallingDebianOn/Thinkpad/T450s/jessie - Debian Wiki


              00:1f.3 SMBus [0c05]: Intel Corporation Wildcat Point-LP SMBus Controller [8086:9ca2] (rev 03)
                Subsystem: Lenovo Device [17aa:5034]
                Flags: medium devsel, IRQ 18
                Memory at e1238000 (64-bit, non-prefetchable) [size=256]
                I/O ports at efa0 [size=32]
                Kernel driver in use: i801_smbus


              I guess that's it! I tried loading this module, but: modprobe: FATAL: Module i801_smbus not found.

              Googled for a while now, but couldn't figure out how to get this module for Debian Jessie (8.1.0).


              As you said - not a big deal.


              As soon as my MYBE board is here I will try to get the GPIO Pins working.


              Bye, Martin

              • 4. Re: Intel NUC I5 Custom solutions header support for Linux

                You're looking at the wrong thing, in the BIOS of the MYHE/MYBE boards (at least 0024+ on i5 version) you need to disable GPIO Lockdown in the bios, then select i2c under GPIO for 12/13 and 14/15 pairs of pins. The gpio driver is the gpio_lynxpoint which doesn't seem to see the gpios in 4.2-rc8 but the i2c get detected on my box as i2c-0 and i2c-1. Support for these boards will be added to mraa (intel-iot-devkit/mraa · GitHub) in future verisons.

                arfoll@erbium ~ % i2cdetect -l

                i2c-0    unknown       Synopsys DesignWare I2C adapter     N/A

                i2c-1    unknown       Synopsys DesignWare I2C adapter     N/A

                i2c-2    unknown       i915 gmbus vga                      N/A

                i2c-3    unknown       i915 gmbus dpc                      N/A

                i2c-4    unknown       i915 gmbus dpb                      N/A

                i2c-5    unknown       i915 gmbus dpd                      N/A

                i2c-6    unknown       DPDDC-B                             N/A

                i2c-7    unknown       DPDDC-C                             N/A

                • 5. Re: Intel NUC I5 Custom solutions header support for Linux

                  Hello, do you have any insight as the the 5i5RYH? The Expansion header footprint exists but was not populated. I cannot find any information on it thus far. I have been probing the connector with my oscilloscope but have not located the DATA/CLK signals


                  user@machine:~$ uname -a

                  Linux minion1 3.19.0-42-generic #48~14.04.1-Ubuntu SMP Fri Dec 18 10:24:49 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux


                  user@machine:~$ sudo i2cdetect -l

                  [sudo] password for user:

                  i2c-0   i2c             i915 gmbus vga                          I2C adapter

                  i2c-1   i2c             i915 gmbus dpc                          I2C adapter

                  i2c-2   i2c             i915 gmbus dpb                          I2C adapter

                  i2c-3   i2c             i915 gmbus dpd                          I2C adapter

                  i2c-4   i2c             DPDDC-C


                  user@machine:~$ sudo lsmod | grep i2c

                  i2c_hid                              20480  0

                  i2c_designware_platform    16384  0

                  i2c_designware_core          16384  1 i2c_designware_platform

                  i2c_algo_bit                       16384  1 i915_bpo

                  hid                                    110592  5 i2c_hid,hid_generic,usbhid,hid_logitech_dj,hid_logitech_hidpp


                  The documentation I was able to find mentions the SMBus being pinned out on the NFC ribbon-cable connector, any thoughts? I am open to collaborating on a kernel driver, etc. Thanks for any insight!


                  PS. There are no options in the BIOS for gpio mapping for this version at this time. The GPIO lockdown option has been unchecked.

                  • 6. Re: Intel NUC I5 Custom solutions header support for Linux

                    Hello eulerworks:


                    Please verify your original thread regarding this.


                    It has been answered.


                    NUC 5i5RYH I2C Custom Header Linux



                    Esteban C