Skip to main content



      Home
Home » Eclipse Projects » Kura » Running Kura docker container(Could not initialize class org.eclipse.kura.linux.usb.LinuxUdevNative)
Running Kura docker container [message #1854382] Tue, 16 August 2022 16:25 Go to next message
Eclipse UserFriend
Hello,

I am running Kura in a docker container hosted in the IOT-GATE-iMX8 - Industrial IoT Gateway. The host OS runs Debian arm64 and the docker container runs CentOS arm64v8. This solution needs to support external device configuration via USB. However, Kura fails to capture USB events in two different scenarios.
[1] Kura fails to capture/discover USB events using the EventHandler (org.osgi.service.event). No errors in the logs nor USB event logs.
[2] Exception thrown when using the USB service (org.eclipse.kura.usb.UsbService)
!ENTRY org.eclipse.kura.linux.usb 4 0 2022-08-16 20:09:41.494
!MESSAGE bundle org.eclipse.kura.linux.usb:1.1.0 (121)[org.eclipse.kura.usb.UsbService(5)] : The activate method has thrown an exception
!STACK 0
java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.kura.linux.usb.LinuxUdevNative
at org.eclipse.kura.linux.usb.UsbServiceImpl.activate(UsbServiceImpl.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:228)
at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41)
at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664)
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510)
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:317)
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:307)
at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:340)
at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114)
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:982)
at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:955)
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:900)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:216)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:213)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:114)
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:48)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:547)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:533)
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:656)
at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:86)
at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47)
at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:664)
at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2308)
at org.apache.felix.scr.impl.manager.DependencyManager$SingleStaticCustomizer.prebind(DependencyManager.java:1154)
at org.apache.felix.scr.impl.manager.DependencyManager.prebind(DependencyManager.java:1568)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1029)
at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:935)
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:900)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:216)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:213)
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:114)
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:48)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:547)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:533)
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:656)
at com.eclipsesource.jaxrs.publisher.internal.ResourceTracker.addingService(ResourceTracker.java:39)
at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:943)
at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:903)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:120)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:957)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:936)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:878)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry$1.run(ServiceRegistry.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:875)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:141)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:261)
at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:496)
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:906)
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:892)
at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:959)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:732)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:666)
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:432)
at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665)
at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:338)
at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:382)
at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49)
at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:264)
at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196)
at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169)
at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:139)
at org.apache.felix.scr.impl.AbstractExtender.addingBundle(AbstractExtender.java:49)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)
at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:945)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:232)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:143)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher$1.run(EquinoxEventPublisher.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:140)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217)
at org.eclipse.osgi.container.Module.publishEvent(Module.java:499)
at org.eclipse.osgi.container.Module.start(Module.java:486)
at org.eclipse.osgi.framework.util.SecureAction$23.run(SecureAction.java:513)
at org.eclipse.osgi.framework.util.SecureAction$23.run(SecureAction.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:510)
at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:886)
at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:877)
at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:559)
at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:502)
at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:1137)
at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1518)
at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345).



Moreover, when I start a bash session with the running container, I can see USB activity picked up by udev using the "$ udevadm monitor" command. See logs below
root@iot-gate-imx8:~# docker exec -it admiring_fermat /bin/bash
[root@79468ab1a73c /]# udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[6566.336295] add /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1 (usb)
KERNEL[6566.343937] add /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[6566.360172] add /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/ttyUSB5 (usb-serial)
KERNEL[6566.360582] add /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/ttyUSB5/tty/ttyUSB5 (tty)
KERNEL[6566.361226] bind /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/ttyUSB5 (usb-serial)
KERNEL[6566.361635] bind /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[6566.362129] bind /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1 (usb)
KERNEL[6780.363566] remove /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/ttyUSB5/tty/ttyUSB5 (tty)
KERNEL[6780.374600] unbind /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/ttyUSB5 (usb-serial)
KERNEL[6780.374714] remove /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/ttyUSB5 (usb-serial)
KERNEL[6780.377482] unbind /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[6780.377624] remove /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[6780.378308] unbind /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1 (usb)
KERNEL[6780.378971] remove /devices/platform/soc@0/32c00000.bus/32e40000.usb/ci_hdrc.0/usb1/1-1 (usb)
[root@79468ab1a73c /]#

Currently I have two systems: one running Kura natively and the other running Kura in a Docker container. The system running Kura natively works just fine and I can configure external devices connected to the system via USB. But the one running in a Docker container does not work.

Thanks in advance for any help.
Re: Running Kura docker container [message #1856082 is a reply to message #1854382] Sun, 20 November 2022 12:50 Go to previous message
Eclipse UserFriend
Hello,
what versions of Kura are you using?

Is the architecture of the native Kura and containerised one the same?

Best regards,
Matteo
Previous Topic:Raspberry pi kura web ui
Next Topic:Cannot connect to AWS IoT
Goto Forum:
  


Current Time: Fri Jun 20 13:11:03 EDT 2025

Powered by FUDForum. Page generated in 0.04467 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top