3 Replies Latest reply on Aug 22, 2016 1:17 PM by Intel_Peter

    Intel Quark stm mac kernel module




      I have troubles with the stmmac.ko module for the Intel Quark X1001 Soc. The Ethernet device is not showing up.


      I have bought the UNO-1252G of Advantech. It is a device based on the Intel Quark X1001 Soc. I build an image with the latest krogoth release of Yocto with the same release of the meta-intel layer. The build configuration is placed at the bottom of this post.


      If I boot the Intel Quark, you can see in the log that the kernel module is not initialising properly. libphy of the kernel is not picking up the Ethernet device. The nic's are not recognised.


      Is there somebody else who experienced these problems already? Do I miss some patches of Intel that are not included in the mainstream Yocto recipes?


      Thx in advance





      Boot messages


      root@intel-quark:~# dmesg | grep stmmac

      stmmaceth 0000:00:14.6: enabling device (0000 -> 0002)

      stmmaceth 0000:00:14.6: enabling bus mastering

      stmmaceth 0000:00:14.7: enabling device (0000 -> 0002)

      stmmaceth 0000:00:14.7: enabling bus mastering






      root@intel-quark:~# modinfo stmmac

      filename:       /lib/modules/4.4.13-yocto-standard/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac.ko

      license:        GPL

      author:         Giuseppe Cavallaro <peppe.cavallaro@st.com>

      description:    STMMAC 10/100/1000 Ethernet device driver


      intree:         Y

      vermagic:       4.4.13-yocto-standard preempt mod_unload 586TSC

      parm:           watchdog:Transmit timeout in milliseconds (default 5s) (int)

      parm:           debug:Message Level (-1: default, 0: no output, 16: all) (int)

      parm:           phyaddr:Physical device address (int)

      parm:           dma_txsize:Number of descriptors in the TX list (int)

      parm:           dma_rxsize:Number of descriptors in the RX list (int)

      parm:           flow_ctrl:Flow control ability [on/off] (int)

      parm:           pause:Flow Control Pause Time (int)

      parm:           tc:DMA threshold control value (int)

      parm:           buf_sz:DMA buffer size (int)

      parm:           eee_timer:LPI tx expiration time in msec (int)

      parm:           chain_mode:To use chain instead of ring mode (int)




      Build configuration


      Build Configuration:

      BB_VERSION        = "1.30.0"

      BUILD_SYS         = "x86_64-linux"

      NATIVELSBSTRING   = "universal"

      TARGET_SYS        = "i586-poky-linux"

      MACHINE           = "intel-quark"

      DISTRO            = "poky"

      DISTRO_VERSION    = "2.1.1"

      TUNE_FEATURES     = "m32 i586-nlp"

      TARGET_FPU        = ""



      meta-yocto-bsp    = "krogoth:f73006031ef8bca7b8851724832c6f37ed63ec89"

      meta-intel        = "krogoth:b8c199201ffe026485a14e1fcfc398e2b3551512"

        • 1. Re: Intel Quark stm mac kernel module

          Hello Peter_de_witte,


          I believe you were using Yocto's BSP in order to build the latest version of Yocto Krogoth. Nevertheless, if you are working with Quark, you should use Intel's official BSP (https://downloadcenter.intel.com/download/23197/Intel-Quark-SoC-X1000-Board-Support-Package-BSP-). This BSP has been officially tested to work with boards based on Quark and currently it supports an older version of Yocto. I understand you would like to use features present in the latest version of Yocto, nevertheless, if you don't use the official BSP you might encounter issues such as the one you describe. In order to fix them you'll probably need to modify the image's kernel extensively which might prove challenging. So, my best suggestion is that you use Intel's official BSP for Quark which can be found in the link above.



          • 2. Re: Intel Quark stm mac kernel module

            Can you try either v4.4.y (means from linux-stable releases) or quite recent vanilla kernel's, such as v4.8-rc1?


            # lspci -nk -s 14.6

            00:14.6 0200: 8086:0937 (rev 10)

                    Subsystem: 8086:0937

                    Kernel driver in use: stmmaceth


            # ip addr show dev eth0

            2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000

                link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff


            # uname -a

            Linux buildroot 4.8.0-rc1+ #258 Thu Aug 11 17:56:24 EEST 2016 i586 GNU/Linux


            # udhcpc

            udhcpc: started, v1.25.0

            [ 6926.598389] eth0: device MAC address 98:4f:ee:05:ac:47

            [ 6926.706791] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

            udhcpc: sending discover

            [ 6928.736247] stmmaceth 0000:00:14.6 eth0: Link is Up - 100Mbps/Full - flow control off

            [ 6928.745414] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

            udhcpc: sending discover

            udhcpc: sending select for

            udhcpc: lease of obtained, lease time 43200

            deleting routers

            adding dns


            # ip addr show dev eth0

            2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

                link/ether 98:4f:ee:05:ac:47 brd ff:ff:ff:ff:ff:ff

                inet brd scope global eth0

                   valid_lft forever preferred_lft forever

                inet6 fe80::9a4f:eeff:fe05:ac47/64 scope link

                   valid_lft forever preferred_lft forever

            • 3. Re: Intel Quark stm mac kernel module

              Hello Peter_de_witte,


              Do you have any updates about this?