Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    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 20:25 Go to next message
Leonardo Roman is currently offline Leonardo RomanFriend
Messages: 1
Registered: August 2022
Junior Member
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 17:50 Go to previous message
Matteo Maiero is currently offline Matteo MaieroFriend
Messages: 423
Registered: July 2015
Location: Italy
Senior Member
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: Thu Apr 18 23:44:01 GMT 2024

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

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

Back to the top