Running Kura docker container [message #1854382] |
Tue, 16 August 2022 16:25  |
Eclipse User |
|
|
|
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.
|
|
|
|
Powered by
FUDForum. Page generated in 0.04467 seconds