6 Replies Latest reply on May 9, 2017 1:55 PM by Intel Corporation

    Can't detect ttyACM0 with new Intel Curie chip

    hahadoo

      Hi

       

      I got my new PCBA with intel curie that I designed at first time.

      When I plug my design with USB cable  to Linux machine, it detects Vendor and Product IDs like below, but after few seconds, USB disconnect.

      When I connect Arduino 101 board, I could see it as in 2nd below, it successfully registered as ttyACM0.

       

      If I compare "lsusb -v" log between my design and Arduino 101, interface sub-class of Arduino 101 is Abstract which is correct for ttyACM0, but for my design is "Application specific Interface".

      I think this is the reason why when I connect my board, I was not registered as ttyACM0.

       

      I successfully compiled A-tree and now I am trying to flashing it to my board, but because of this problem, I can't flash image of A-tree to my board.

       

      Installing and Using the A Tree | Intel® Software

       

      what I am not sure is whether reading below information(254 Application Specific interface for interface class and Device firmware update for sub-class) with brand new Curie is correct or

      it should be read as same as when I read with Arduino??

      can you help me whether information that I read with my design with new Curie is correct?

       

      Since this is new board as first time, I am also wondering whether this is because there is problem with USB signaling because of circuit design or PCB layout?

      I suspect this might be HW problem, but since I could read ID correctly, I also guess HW should be ok, but not sure.

       

      I could see some comment  here -Bootloader on new Curie chips , "The Curie chip comes with manufacturing bootloader and allows USB flashing for x86, ARC and BLE. .

      that means I could see USB flashing by following instruction and I should see ttyACM0 when I connect new Intel Curie to Linux machine as similar as Arduino 101.

      But still not 100% sure.

       

      Do I have to flash image with JTAG(J-link) for new Intel curie or I can use USB as same as Arduino 101?
      I can get some clear information about my question, I can get some clue what would be problem of my board and how to debug.

       

      << Arduino 101 >>

            bInterfaceClass         2 Communications

            bInterfaceSubClass      2 Abstract (modem)

       

      << My design >>

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

       

      << log when connect my board >>

      [179433.688023] usb 5-1: new full-speed USB device number 47 using uhci_hcd

      [179433.890055] usb 5-1: New USB device found, idVendor=8087, idProduct=0a99

      [179433.890059] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

      [179433.890061] usb 5-1: Product: CURIECRB

      [179433.890063] usb 5-1: Manufacturer: Intel

      [179433.890065] usb 5-1: SerialNumber: 00.01

      ==>

      [179443.280068] usb 5-1: USB disconnect, device number 47

       

      << when I connect Arduino 101 >>

      [22108.484018] usb 5-2: new full-speed USB device number 25 using uhci_hcd

      [22108.671305] usb 5-2: New USB device found, idVendor=8087, idProduct=0ab6

      [22108.671308] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3

      [22108.671310] usb 5-2: Product: ARDUINO 101

      [22108.671313] usb 5-2: Manufacturer: Intel

      [22108.671315] usb 5-2: SerialNumber: AE6642EK61801Z7

      [22108.910239] cdc_acm 5-2:1.0: ttyACM0: USB ACM device

      [22108.911612] usbcore: registered new interface driver cdc_acm

       

      << lsusb -v when I connect my design >>

      Bus 005 Device 045: ID 8087:0a99 Intel Corp.

      Couldn't open device, some information will be missing

      Device Descriptor:

        bLength                18

        bDescriptorType         1

        bcdUSB               2.00

        bDeviceClass            0 (Defined at Interface level)

        bDeviceSubClass         0

        bDeviceProtocol         0

        bMaxPacketSize0        64

        idVendor           0x8087 Intel Corp.

        idProduct          0x0a99

        bcdDevice           80.87

        iManufacturer           1

        iProduct                2

        iSerial                 3

        bNumConfigurations      1

        Configuration Descriptor:

          bLength                 9

          bDescriptorType         2

          wTotalLength          117

          bNumInterfaces          1

          bConfigurationValue     1

          iConfiguration          0

          bmAttributes         0xc0

            Self Powered

          MaxPower              100mA

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       0

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface              4

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       1

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface              5

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       2

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface              6

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       3

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface              7

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       4

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface              8

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       5

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface              9

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       6

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface             10

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       7

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface             11

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       8

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface             12

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       9

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface             13

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting      10

            bNumEndpoints           0

            bInterfaceClass       254 Application Specific Interface

            bInterfaceSubClass      1 Device Firmware Update

            bInterfaceProtocol      2

            iInterface             14

            Device Firmware Upgrade Interface Descriptor:

              bLength                             9

              bDescriptorType                    33

              bmAttributes                        7

                Will Not Detach

                Manifestation Tolerant

                Upload Supported

                Download Supported

              wDetachTimeout                      0 milliseconds

              wTransferSize                    2048 bytes

              bcdDFUVersion                   1.10

       

      << when connect Arduino 101 >>

      Bus 005 Device 049: ID 8087:0ab6 Intel Corp.

      Couldn't open device, some information will be missing

      Device Descriptor:

        bLength                18

        bDescriptorType         1

        bcdUSB               1.10

        bDeviceClass            2 Communications

        bDeviceSubClass         0

        bDeviceProtocol         0

        bMaxPacketSize0        64

        idVendor           0x8087 Intel Corp.

        idProduct          0x0ab6

        bcdDevice           80.87

        iManufacturer           1

        iProduct                2

        iSerial                 3

        bNumConfigurations      1

        Configuration Descriptor:

          bLength                 9

          bDescriptorType         2

          wTotalLength           67

          bNumInterfaces          2

          bConfigurationValue     1

          iConfiguration          0

          bmAttributes         0xc0

            Self Powered

          MaxPower              500mA

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        0

            bAlternateSetting       0

            bNumEndpoints           1

            bInterfaceClass         2 Communications

            bInterfaceSubClass      2 Abstract (modem)

            bInterfaceProtocol      1 AT-commands (v.25ter)

            iInterface              0

            CDC Header:

              bcdCDC               1.20

            CDC ACM:

              bmCapabilities       0x02

                line coding and serial state

            CDC Union:

              bMasterInterface        0

              bSlaveInterface         1

            CDC Call Management:

              bmCapabilities       0x00

              bDataInterface          1

            Endpoint Descriptor:

              bLength                 7

              bDescriptorType         5

              bEndpointAddress     0x81  EP 1 IN

              bmAttributes            3

                Transfer Type            Interrupt

                Synch Type               None

                Usage Type               Data

              wMaxPacketSize     0x000a  1x 10 bytes

              bInterval               1

          Interface Descriptor:

            bLength                 9

            bDescriptorType         4

            bInterfaceNumber        1

            bAlternateSetting       0

            bNumEndpoints           2

            bInterfaceClass        10 CDC Data

            bInterfaceSubClass      0 Unused

            bInterfaceProtocol      0

            iInterface              0

            Endpoint Descriptor:

              bLength                 7

              bDescriptorType         5

              bEndpointAddress     0x82  EP 2 IN

              bmAttributes            2

                Transfer Type            Bulk

                Synch Type               None

                Usage Type               Data

              wMaxPacketSize     0x0040  1x 64 bytes

              bInterval               0

            Endpoint Descriptor:

              bLength                 7

              bDescriptorType         5

              bEndpointAddress     0x01  EP 1 OUT

              bmAttributes            2

                Transfer Type            Bulk

                Synch Type               None

                Usage Type               Data

              wMaxPacketSize     0x0040  1x 64 bytes

              bInterval               0

        • 1. Re: Can't detect ttyACM0 with new Intel Curie chip
          Intel Corporation
          This message was posted on behalf of Intel Corporation

          Hi hahadoo,

          Thank you for contacting us and providing such a detailed description. Please allow us to investigate further on your question so we can provide the best suggestion possible.
          We appreciate your patience.

          Regards,
          -Sergio A
           

          • 2. Re: Can't detect ttyACM0 with new Intel Curie chip
            hahadoo

            Thanks for reply.

             

            by looking at more information about below, it looks Curie was in DFU mode.

             

                  bInterfaceClass       254 Application Specific Interface

                  bInterfaceSubClass      1 Device Firmware Update

                  bInterfaceProtocol      2

             

            But somehow it fail to open it, I used "dfu_util -l" to check interface and the it returned "Cannot open DFU device 8087:0a99"

            See below logs.

            It looks this is related with the problem of "USB disconnect" after few seconds it detects idVonder and idProduct.

            since it looks it is read DFU information correctly, it may not HW problem, but no idea why.

             

            it looks boot loader in new Curie chip is not same as Arduino 101.

             

            =======================================================================

            hahadoo@hahadoo-64bit:~/workspace/intel-curie/CODK/CODK-A/flashpack/bin$ ./dfu-util -l

            dfu-util 0.8

             

            Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.

            Copyright 2010-2014 Tormod Volden and Stefan Schmidt

            This program is Free Software and has ABSOLUTELY NO WARRANTY

            Please report bugs to dfu-util@lists.gnumonks.org

             

            dfu-util: Cannot open DFU device 8087:0a99

            =======================================================================

             

            Thanks

            • 3. Re: Can't detect ttyACM0 with new Intel Curie chip
              hahadoo

              Below is syslog when I reset Curie board, it looks it couldn't find some module that for Curie.

              is there any dev rule that I have to add or other setup??

               

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: Execute 'load' 'usb:v8087p0A99d8087dc00dsc00dp00icFEisc01ip02in00'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: No module matches 'usb:v8087p0A99d8087dc00dsc00dp00icFEisc01ip02in00'

               

              ========================================================================================================================

              May  2 22:33:46 hahadoo-64bit systemd-udevd[269]: Reading rules file: /lib/udev/rules.d/99-systemd.rules

              May  2 22:33:46 hahadoo-64bit systemd-udevd[269]: rules contain 393216 bytes tokens (32768 * 12 bytes), 31086 bytes strings

              May  2 22:33:46 hahadoo-64bit systemd-udevd[269]: 20260 strings (167756 bytes), 17017 de-duplicated (139914 bytes), 3244 trie nodes used

              May  2 22:33:46 hahadoo-64bit systemd-udevd[269]: seq 2674 forked new worker [11629]

              May  2 22:33:46 hahadoo-64bit systemd-udevd[269]: seq 2675 queued, 'add' 'usb'

              May  2 22:33:46 hahadoo-64bit mtp-probe: checking bus 5, device 72: "/sys/devices/pci0000:00/0000:00:1d.3/usb5/5-1"

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: seq 2674 running

              May  2 22:33:46 hahadoo-64bit mtp-probe: bus: 5, device: 72 was not an MTP device

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: value '[dmi/id]sys_vendor' is 'Shuttle Inc'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: value '[dmi/id]sys_vendor' is 'Shuttle Inc'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: IMPORT builtin 'usb_id' /lib/udev/rules.d/50-udev-default.rules:13

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: IMPORT builtin 'hwdb' /lib/udev/rules.d/50-udev-default.rules:13

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: MODE 0664 /lib/udev/rules.d/50-udev-default.rules:41

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: PROGRAM 'mtp-probe /sys/devices/pci0000:00/0000:00:1d.3/usb5/5-1 5 72' /lib/udev/rules.d/69-libmtp.rules:1923

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11630]: starting 'mtp-probe /sys/devices/pci0000:00/0000:00:1d.3/usb5/5-1 5 72'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: 'mtp-probe /sys/devices/pci0000:00/0000:00:1d.3/usb5/5-1 5 72'(out) '0'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: Process 'mtp-probe /sys/devices/pci0000:00/0000:00:1d.3/usb5/5-1 5 72' succeeded.

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: handling device node '/dev/bus/usb/005/072', devnum=c189:583, mode=0664, uid=0, gid=0

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: set permissions /dev/bus/usb/005/072, 020664, uid=0, gid=0

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: creating symlink '/dev/char/189:583' to '../bus/usb/005/072'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: created db file '/run/udev/data/c189:583' for '/devices/pci0000:00/0000:00:1d.3/usb5/5-1'

              May  2 22:33:46 hahadoo-64bit org.freedesktop.fwupd[792]: (fwupd:1804): As-CRITICAL **: as_store_get_app_by_provide: assertion 'value != NULL' failed

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: passed device to netlink monitor 0x556794bdcb70

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: seq 2674 processed

              May  2 22:33:46 hahadoo-64bit systemd-udevd[269]: passed 297 byte device to netlink monitor 0x556794bd8460

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: seq 2675 running

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: value '[dmi/id]sys_vendor' is 'Shuttle Inc'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: value '[dmi/id]sys_vendor' is 'Shuttle Inc'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: IMPORT builtin 'hwdb' /lib/udev/rules.d/50-udev-default.rules:15

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: IMPORT builtin 'usb_id' /lib/udev/rules.d/60-libgphoto2-6.rules:9

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: unable to access usb_interface device of '/sys/devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: IMPORT builtin 'usb_id' returned non-zero

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: RUN 'kmod load $env{MODALIAS}' /lib/udev/rules.d/80-drivers.rules:5

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: created db file '/run/udev/data/+usb:5-1:1.0' for '/devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: Execute 'load' 'usb:v8087p0A99d8087dc00dsc00dp00icFEisc01ip02in00'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: No module matches 'usb:v8087p0A99d8087dc00dsc00dp00icFEisc01ip02in00'

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: passed device to netlink monitor 0x556794bdcb70

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: seq 2675 processed

              May  2 22:33:46 hahadoo-64bit systemd-udevd[269]: cleanup idle workers

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: Unload module index

              May  2 22:33:46 hahadoo-64bit systemd-udevd[11629]: Unloaded link configuration context.

              May  2 22:33:46 hahadoo-64bit systemd-udevd[269]: worker [11629] exited

              May  2 22:33:50 hahadoo-64bit colord-sane: io/hpmud/pp.c 627: unable to read device-id ret=-1

              May  2 22:33:55 hahadoo-64bit systemd-udevd[269]: seq 2676 queued, 'remove' 'usb'

              May  2 22:33:55 hahadoo-64bit systemd-udevd[269]: Validate module index

              May  2 22:33:55 hahadoo-64bit systemd-udevd[269]: Check if link configuration needs reloading.

              May  2 22:33:55 hahadoo-64bit systemd-udevd[269]: seq 2676 forked new worker [11645]

              May  2 22:33:55 hahadoo-64bit systemd-udevd[269]: seq 2677 queued, 'remove' 'usb'

              May  2 22:33:55 hahadoo-64bit systemd-udevd[11645]: seq 2676 running

              May  2 22:33:55 hahadoo-64bit systemd-udevd[11645]: value '[dmi/id]sys_vendor' is 'Shuttle Inc'

              May  2 22:33:55 hahadoo-64bit systemd-udevd[11645]: value '[dmi/id]sys_vendor' is 'Shuttle Inc'

              May  2 22:33:55 hahadoo-64bit systemd-udevd[11645]: passed device to netlink monitor 0x556794be2a80

              May  2 22:33:55 hahadoo-64bit systemd-udevd[11645]: seq 2676 processed

              May  2 22:33:55 hahadoo-64bit systemd-udevd[269]: passed 283 byte device to netlink monitor 0x556794bd8460

              May  2 22:33:55 hahadoo-64bit systemd-udevd[11645]: seq 2677 running

              May  2 22:33:55 hahadoo-64bit kernel: [359732.584067] usb 5-1: USB disconnect, device number 72

              ========================================================================================================================

              • 4. Re: Can't detect ttyACM0 with new Intel Curie chip
                Intel Corporation
                This message was posted on behalf of Intel Corporation

                Hi hahadoo,

                Thank you for your patience. We’ve been doing some tests on our Arduino 101 board. Your logs and results are equal to ours when using the Arduino 101. In our Linux machine, the USB is not disconnecting, which makes us believe that the problem lies only with your custom board. Please keep in mind that custom board designs are out of the scope of support of this team and even though we want to try to help you resolve this issue, it’s hard to provide a suggestion for a custom board because we can’t reproduce the issue.

                Looking further, we found a thread that’s similar to yours https://communities.intel.com/thread/110541 . In this thread, the customer is also using a custom board and asks about differences in the boot loader of the Arduino 101 and the individual Curie modules. It seems this customer found a solution after following the instructions of the recovery firmware flashpack https://software.intel.com/en-us/node/675552 .

                Hopefully, you can find this information useful so you can continue to develop your project.

                Regards,
                -Sergio A
                 

                • 5. Re: Can't detect ttyACM0 with new Intel Curie chip
                  hahadoo

                  I have to order JTAG and connect and was waiting for them.

                  Finally I got today, I flashed bootloader using JTAG to my board.

                   

                  After flashing bootloader - A tree image, everything is working fine.

                  So, I think the default bootloader which is in new Curie is not same as Arduino 101, it can not be programmed using DFU till flashing new bootloader.

                   

                  Thanks

                  • 6. Re: Can't detect ttyACM0 with new Intel Curie chip
                    Intel Corporation
                    This message was posted on behalf of Intel Corporation

                    Hi hahadoo,

                    Thank you for coming back and sharing your results. It’s great to hear you’ve found the solution to your issue.
                    Feel free to contact us again if help is needed, we’d be happy to assist you.

                    Regards,
                    -Sergio A