Can't add new OPTA to Arduino Cloud

When adding OPTA, the following error (as shown in the attached image) keeps appearing.

environment:
MacOS: 15.6
Arduino Cloud Agent version: 1.7.0-87f097b

Hi @smmsadmin
could you please try the following steps:

  • Load a blink sketch on your board with desktop IDE
  • Try again to add your OPTA to Arduino Cloud

Thanks for your reply.

Here is my step:

  1. Open the Arduino IDE, then click “New Sketch.”
  2. Verify that the OPTA is connected via USB.
  3. In the Arduino IDE, click “Upload,” and see the following messages
Download done.
File downloaded successfully
Transitioning to dfuMANIFEST state
  1. Then add the OPTA with the empty sketch to the Arduino Cloud
  2. Still shows the error messages in Chrome

@smmsadmin
try to open the Cloud Agent debug monitor on localhost:8991 from your browser and repeat the procedure.

There should be some additional information about the registration process.

Thank you for your reply. I initially tried to attach the log as a file, but I received a notification stating that new users are not permitted to perform this action. Therefore, I can only paste the log output from the Cloud Agent debug monitor (running on localhost:8991) into this message.

The steps I followed are as follows:

  1. Opened the Cloud Agent debug monitor.

  2. In the Arduino Cloud Device section, use the “Add Device” feature to register an OPTA device.

  3. On the web interface, the screen remained stuck on “Updating Your Board for Improved Setup.”

The images below illustrate the results I obtained when adding the OPTA to the Cloud (see Figures 1–3).

I originally thought the issue might be limited to that particular OPTA unit, so I tried a brand-new, unopened device—and encountered the same behavior.

Log:

list

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

list

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

list

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

list

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

list

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

list

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

sendraw /dev/cu.usbmodem1101 VaoCAAraAAEgA4EYZDn/qlU=

sendraw /dev/cu.usbmodem1101 VaoDAAMB4fGqVQ==

close /dev/cu.usbmodem1101

Closing serial port /dev/cu.usbmodem1101

Shutting down reader on /dev/cu.usbmodem1101

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

{
  "Cmd": "Close",
  "Desc": "Got unregister/close on port.",
  "Port": "/dev/cu.usbmodem1101",
  "Baud": 9600
}

Shutting down writer on /dev/cu.usbmodem1101

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

writerBuffered just got closed. make sure you make a new one. port:/dev/cu.usbmodem1101

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": false,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

{
  "Cmd": "Serial",
  "ProgrammerStatus": "Starting"
}

{
  "Msg": "Flashing with command:/Users/wujinrong/.arduino-create/arduino/arduino-fwuploader/2.4.1/arduino-fwuploader firmware list -b arduino:mbed_opta:opta",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "No firmwares available.",
  "ProgrammerStatus": "Busy"
}

{
  "Flash": "Ok",
  "ProgrammerStatus": "Done"
}

downloadtool dfu-util 0.10.0-arduino1 arduino keep

{
  "DownloadStatus": "Pending",
  "Msg": "Ensure that the files are executable"
}

{
  "DownloadStatus": "Pending",
  "Msg": "Updating map with location /Users/wujinrong/.arduino-create/arduino/dfu-util/0.10.0-arduino1"
}

{
  "DownloadStatus": "Success",
  "Msg": "Map Updated"
}

{
  "Cmd": "Serial",
  "ProgrammerStatus": "Starting"
}

{
  "Msg": "Restarting in bootloader mode",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Flashing with command:/Users/wujinrong/.arduino-create/arduino/dfu-util/0.10.0-arduino1/dfu-util --device 0x2341:0x0364 -D /var/folders/2j/7ppn_8vn073gvg54yxbf3x_r0000gn/T/arduino-create-agent3282408446/provisioningv2.bin -a0 --dfuse-address=0x08040000:leave",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "dfu-util 0.10-dev",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Copyright 2010-2021 Tormod Volden and Stefan Schmidt",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "This program is Free Software and has ABSOLUTELY NO WARRANTY",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Please report bugs to http://sourceforge.net/p/dfu-util/tickets/",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "dfu-util: Warning: Invalid DFU suffix signature",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "dfu-util: A valid DFU suffix will be required in a future dfu-util release",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Opening DFU capable USB device...",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Device ID 2341:0364",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Device DFU version 011a",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Claiming USB DFU Interface...",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Setting Alternate Interface #0 ...",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Determining device status...",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "DFU state(2) = dfuIDLE, status(0) = No error condition is present",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "DFU mode device DFU version 011a",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Device returned transfer size 4096",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "DfuSe interface name: \"Internal Flash   \"",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Downloading element to address = 0x08040000, size = 1122116",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "\rErase   \t[                         ]   0%            0 bytes\rErase   \t[                         ]   0%            0 bytes\rErase   \t[=                        ]   4%        45056 bytes\rErase   \t[==                       ]   8%        90112 bytes\rErase   \t[==                       ]  11%       131072 bytes\rErase   \t[===                      ]  12%       135168 bytes\rErase   \t[====                     ]  16%       180224 bytes\rErase   \t[=====                    ]  20%       225280 bytes\rErase   \t[=====                    ]  23%       262144 bytes\rErase   \t[======                   ]  24%       270336 bytes\rErase   \t[=======                  ]  28%       315392 bytes\rErase   \t[========                 ]  32%       360448 bytes\rErase   \t[========                 ]  35%       393216 bytes\rErase   \t[=========                ]  36%       405504 bytes\rErase   \t[==========               ]  40%       450560 bytes\rErase   \t[===========              ]  44%       495616 bytes\rErase   \t[===========              ]  46%       524288 bytes\rErase   \t[============             ]  48%       540672 bytes\rErase   \t[=============            ]  52%       585728 bytes\rErase   \t[==============           ]  56%       630784 bytes\rErase   \t[==============           ]  58%       655360 bytes\rErase   \t[===============          ]  60%       675840 bytes\rErase   \t[================         ]  64%       720896 bytes\rErase   \t[=================        ]  68%       765952 bytes\rErase   \t[=================        ]  70%       786432 bytes\rErase   \t[==================       ]  72%       811008 bytes\rErase   \t[===================      ]  76%       856064 bytes\rErase   \t[====================     ]  80%       901120 bytes\rErase   \t[====================     ]  81%       917504 bytes\rErase   \t[=====================    ]  84%       946176 bytes\rErase   \t[======================   ]  88%       991232 bytes\rErase   \t[=======================  ]  92%      1036288 bytes\rErase   \t[=======================  ]  93%      1048576 bytes\rErase   \t[======================== ]  96%      1077248 bytes\rErase   \t[=========================] 100%      1122116 bytes",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Erase    done.",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "\rDownload\t[                         ]   0%            0 bytes\rDownload\t[=                        ]   4%        45056 bytes\rDownload\t[==                       ]   8%        90112 bytes\rDownload\t[==                       ]   8%        94208 bytes\rDownload\t[===                      ]  12%       135168 bytes\rDownload\t[====                     ]  16%       180224 bytes\rDownload\t[====                     ]  17%       196608 bytes\rDownload\t[=====                    ]  20%       225280 bytes\rDownload\t[======                   ]  24%       270336 bytes\rDownload\t[======                   ]  26%       299008 bytes\rDownload\t[=======                  ]  28%       315392 bytes\rDownload\t[========                 ]  32%       360448 bytes\rDownload\t[========                 ]  35%       401408 bytes\rDownload\t[=========                ]  36%       405504 bytes\rDownload\t[==========               ]  40%       450560 bytes\rDownload\t[===========              ]  44%       495616 bytes\rDownload\t[===========              ]  44%       503808 bytes\rDownload\t[============             ]  48%       540672 bytes\rDownload\t[=============            ]  52%       585728 bytes\rDownload\t[=============            ]  54%       606208 bytes\rDownload\t[==============           ]  56%       630784 bytes\rDownload\t[===============          ]  60%       675840 bytes\rDownload\t[===============          ]  63%       708608 bytes\rDownload\t[================         ]  64%       720896 bytes\rDownload\t[=================        ]  68%       765952 bytes\rDownload\t[==================       ]  72%       811008 bytes\rDownload\t[===================      ]  76%       856064 bytes\rDownload\t[====================     ]  80%       901120 bytes\rDownload\t[====================     ]  81%       913408 bytes\rDownload\t[=====================    ]  84%       946176 bytes\rDownload\t[======================   ]  88%       991232 bytes\rDownload\t[======================   ]  90%      1015808 bytes\rDownload\t[=======================  ]  92%      1036288 bytes\rDownload\t[======================== ]  96%      1077248 bytes\rDownload\t[======================== ]  99%      1118208 bytes\rDownload\t[=========================] 100%      1122116 bytes",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Download done.",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "File downloaded successfully",
  "ProgrammerStatus": "Busy"
}

{
  "Msg": "Transitioning to dfuMANIFEST state",
  "ProgrammerStatus": "Busy"
}

{
  "Flash": "Ok",
  "ProgrammerStatus": "Done"
}

list

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1102",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": false,
    "VendorID": "0x2341",
    "ProductID": "0x0364"
  }
]

list

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": false,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

open /dev/cu.usbmodem1101 9600 timedraw

{
  "Cmd": "Open",
  "Desc": "Got register/open on port.",
  "Port": "/dev/cu.usbmodem1101",
  "Baud": 9600,
  "BufferType": "timedraw"
}

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

close /dev/cu.usbmodem1101

Closing serial port /dev/cu.usbmodem1101

Shutting down reader on /dev/cu.usbmodem1101

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

{
  "Cmd": "Close",
  "Desc": "Got unregister/close on port.",
  "Port": "/dev/cu.usbmodem1101",
  "Baud": 9600
}

Shutting down writer on /dev/cu.usbmodem1101

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

writerBuffered just got closed. make sure you make a new one. port:/dev/cu.usbmodem1101

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": false,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

list

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": false,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

open /dev/cu.usbmodem1101 9600 timedraw

{
  "Cmd": "Open",
  "Desc": "Got register/open on port.",
  "Port": "/dev/cu.usbmodem1101",
  "Baud": 9600,
  "BufferType": "timedraw"
}

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

sendraw /dev/cu.usbmodem1101 VaoCAAraAAEgA4EYZDn/qlU=

sendraw /dev/cu.usbmodem1101 VaoDAAMB4fGqVQ==

sendraw /dev/cu.usbmodem1101 VaoDAAMC02qqVQ==

close /dev/cu.usbmodem1101

Closing serial port /dev/cu.usbmodem1101

Shutting down reader on /dev/cu.usbmodem1101

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

{
  "Cmd": "Close",
  "Desc": "Got unregister/close on port.",
  "Port": "/dev/cu.usbmodem1101",
  "Baud": 9600
}

Shutting down writer on /dev/cu.usbmodem1101

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": true,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

writerBuffered just got closed. make sure you make a new one. port:/dev/cu.usbmodem1101

Serial Ports:
[
  {
    "Name": "/dev/cu.usbmodem1101",
    "SerialNumber": "004000283033511933333437",
    "IsOpen": false,
    "VendorID": "0x35D1",
    "ProductID": "0x0164"
  }
]

Figure 1:

Figure 2:

Figure 3:

What colour are the LEDs on the top of your OPTA ?

It looks like the board is not responding to the messages from the agent and the port got closed.

What happens if from this state you stop the web procedure, open a serial monitor and reset the board ? You should see something like this:

Starting Provisioning version 0.3.0
BLE Available
Waiting Ethernet configuration from DHCP server, check cable connection
timeout: 250, response timeout: 500
…
NetworkConfigurator: Connection fail: Failed to connect

At this point the LED is blinking blue.

Are you using ethernet or WiFi?

@pennam
Thanks for your support.

Regarding the serial monitor you mentioned, do you mean a tool similar to a serialport utility? If so, as far as I know, you need to specify the baudrate—how should this value be configured?

The serial port utility’s icon looks like this.

I was thinking about the Arduino IDE built-in serial monitor but any other serial port monitor should work.

You can configure the port with

baudrate 9600

parity none

bits 8

stopbits 1

flowcontrol none

@pennam

The same issue. FYI.

@smmsadmin Thanks. Did you also solve using “Associated Device” - new Device from the thing page?

@pennam
After testing, I was able to bind the Opta to Arduino Cloud using the “Associated device” feature.

1 Like

Hello,

Where is Associated Device found in the device setup?

I was unable to configure a new device for Opta Lite.

Thanks,

Chris

Hi @hermosaranchllc. I believe this is the procedure you can use to work around the bug with creating new Devices with an Opta:

  1. Click the following link to open the "Things" page in your web browser:
    https://app.arduino.cc/things
  2. Click the "+ THING" button to create a new Thing (or if you have an existing Thing you want to use, select that instead).
    The Thing page will open.
  3. Click the "Select Device" button under the "Associated Device" section of the Thing page.
    The "Associate device" dialog will open.
  4. Click the "SET UP NEW DEVICE" button in the "Associate device" dialog.
    The "Setup Device" dialog will open.
  5. Click the "Arduino board" button in the "Setup Device" dialog.
    The Device creation user flow will start.
  6. Complete the Device creation process.

So the difference is to initiate the Device creation process via the Thing page instead of the alternative approach of initiating it by either clicking the the CREATE NEW > + Add Device button on the home page, or the "+ DEVICE" button on the "Devices" page.

2 Likes

Yes, it works! Thank you for the quick help.

I was having the same issue with Opta Wifi too. This method should fix that as well. Looks like the older config interface that we had a few weeks ago.

Chris

You are welcome. I'm glad it is working now.

Thanks to @raudaschls and @smmsadmin for taking the time to share this workaround they found!

2 Likes