How long to update firmware?

Hello,
I just started playing with my Openmv camera and IDE today. So far I love the interface and design. It’s really lovely and I’m so excited to start using it for projects. I have a question about getting started. When I tried to run “Hello World” I got an error. I did a search for that error and found a discussion about how to solve it with a firmware update. I followed those steps and now I am sitting at the screen pictured below. It seems to be taking a long time and I’m starting to wonder if I missed a step or did something wrong. Any advice on moving forward from here would be greatly appreciated.
Thank you for your time,
M
Edited to add I am on Ubuntu 16.04, the camera is Openmv3 r2

Hello,
An update on my progress getting started. I hit “Cancel” after around 15 minutes.
I then followed the steps in the prompt to connect the BOOT and RST pins and reconnect.
I followed the prompt to apt-get / pip install a couple usb items.
I got an error saying there was no file in the expected location.
I tried to restart the IDE and choose “Run Bootloader” from the Tools menu item.
This is the error message I got. I tried to browse the openmvide directory on my machine, but I could not locate a binary file.
Thanks for any support :slight_smile:

Hi, sorry for you running into this. This process isn’t straight forward for everyone.

So, since the connect process did not complete immediately nothing was going on. So, you should have pressed cancel. The IDE should have prompted you to use DFU mode to re-program the camera then. Anyway, if you want to use the Run Bootloader option you can grab the latest firmware from here:

Then select the OpenMV3/openmv.dfu file for loading via DFU or the OpenMV3/firmware.bin file for regular firmware programming. DFU will always work… but, regular firmware loading is faster.

When you have outdated firmware the IDE let’s you know on the bottom of the screen. I used to force this firmware update process but that generated a lot of complaints.

Thank you for taking the time to reply to my question, Kwagyeman.
I downloaded the firmware release you linked to and used it to replace the firmware folder in my local openmvide directory.
When I choose Run Bootloader from the Tools menu, I get this prompt.
openmv005_fx.png
I follow the instructions, but nothing happens to indicate that the bootloader has enumerated.
If I press “ok” I get the following error message…

Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Traceback (most recent call last):
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 571, in <module>
    main()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 540, in main
    init()
  File "/home/green/openmvide/share/qtcreator/pydfu/pydfu.py", line 86, in init
    usb.util.claim_interface(__dev, __DFU_INTERFACE)
  File "/usr/local/lib/python2.7/dist-packages/usb/util.py", line 205, in claim_interface
    device._ctx.managed_claim_interface(device, interface)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 159, in managed_claim_interface
    self.managed_open()
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 102, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/usb/core.py", line 120, in managed_open
    self.handle = self.backend.open_device(self.dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 786, in open_device
    return _DeviceHandle(dev)
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 643, in __init__
    _check(_lib.libusb_open(self.devid, byref(self.handle)))
  File "/usr/local/lib/python2.7/dist-packages/usb/backend/libusb1.py", line 595, in _check
   raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)

Oh, yeah, I see the issue. You need udev permissions to use the library. Mmm. Um, did you by chance have follow the install guide here:

http://docs.openmv.io/openmvcam/tutorial/software_setup.html

One of the steps involves installing udev rules.

That said, please also try the other bootloader method buy using the firmware.bin file. This invokes a second bootloader option we have to get past udev rules requirements for DFU.

Note that when the camera is in DFU mode you’ll only notice it via looking at device files… It’s very silent in DFU mode.

Beautiful! I had missed the Software Setup page and therefore missed the udev instructions. My openmv cam is connected now. Thank you!!!